import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.sql.SQLException;

import java.util.LinkedHashMap;

import java.util.Map;

import com.huawei.widget.commons.dao.RowMapper;

import com.huawei.widget.commons.dao.util.JdbcUtils;

/**

* 将每行映射为MAP对象的RowMapper实现。

*

* @author g00106664

* @version C02 2009-4-27

* @since OpenEye WIDGET_SRV V100R001C02

*/

@SuppressWarnings("unchecked")

public class ColumnMapRowMapper implements RowMapper{

/**

* 此方法用于将每行数据映射为实体类。

*

* @param rs

*            ResultSet

* @param rowNum

*            the row num

* @return the t

* @throws java.sql.SQLException

*             the SQL exception

* @see com.huawei.widget.db.RowMapper#mapRow(ResultSet, int)

*/

public Map mapRow(ResultSet rs, int rowNum) throws SQLException

{

ResultSetMetaData rsmd = rs.getMetaData();

int columnCount = rsmd.getColumnCount();

Map mapOfColValues = createColumnMap(columnCount);

for (int i = 1; i <= columnCount; i++)

{

String key = getColumnKey(rsmd.getColumnName(i));

Object obj = getColumnValue(rs, i);

mapOfColValues.put(key.toLowerCase(), obj);

}

return mapOfColValues;

}

/**

* Create a Map instance to be used as column map.

*

* By default, a linked case-insensitive Map will be created if possible,

* else a plain HashMap (see Spring's CollectionFactory).

*

* @param columnCount

*            the column count, to be used as initial capacity for the Map

* @return the new Map instance

* @see org.springframework.core.CollectionFactory#createLinkedCaseInsensitiveMapIfPossible

*/

protected Map createColumnMap(int columnCount)

{

return new LinkedHashMap(columnCount);

}

/**

* Determine the key to use for the given column in the column Map.

*

* @param columnName

*            the column name as returned by the ResultSet

* @return the column key to use

* @see java.sql.ResultSetMetaData#getColumnName

*/

protected String getColumnKey(String columnName)

{

return columnName;

}

/**

* Retrieve a JDBC object value for the specified column.

*

* The default implementation uses the getObject method.

* Additionally, this implementation includes a "hack" to get around Oracle

* returning a non standard object for their TIMESTAMP datatype.

*

* @param rs

*            is the ResultSet holding the data

* @param index

*            is the column index

* @return the Object returned

* @throws java.sql.SQLException

*             如有异常,抛出。

* @see org.springframework.jdbc.support.JdbcUtils#getResultSetValue

*/

protected Object getColumnValue(ResultSet rs, int index)

throws SQLException

{

return JdbcUtils.getResultSetValue(rs, index);

}

}

java rowmapper 通用实现_将每行映射为MAP对象的RowMapper实现相关推荐

  1. java rowmapper 通用实现_必经之路!各大网站力推Java代码优化:77案例+28技巧

    优秀的代码品质是程序员走向架构师神圣殿堂的必经之路!!! Java是目前的主流开发技术,如何更好地发挥其技术优势实现最佳资源配置和获得更高商业价值,一直是Java技术发展的趋势.然而Java体系庞大. ...

  2. java删除通用方法_一个比较通用的java删除文件和文件夹的方法

    在项目中如果有文件上传的时候,通常情况下,我们需要对上传的文件进行维护,一般的维护就是删除文件或删除文件夹和文件夹下的文件,下面的方法则实现了这个需求: /** * 删除文件夹和文件夹下的文件 * @ ...

  3. java读mysql增量_如何复制行并在MySQL中使用自动增量字段插入同一个表?

    如果您需要复杂的解决方案以便经常这样做,您可以使用以下过程: DELIMITER $$ CREATE PROCEDURE `duplicateRows`(_schemaName text, _tabl ...

  4. java 缓存 单例_单例模式应用:高速缓存和查找对象(转)

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 单例模式获得工厂唯一实例,用map保存对象引用,实现快速查找 1.例子 package com.d1zhan.cache; import java.uti ...

  5. java ee 值范围_【转载】JAVAEE之内置对象和属性范围

    内置对象和属性范围 ​ 四种属性范围 ​ 九个内置对象 1.内置对象 如果说想要使用一个对象,必须new 出来,但是在我们的jsp操作中,发现我们使用过的out,request对象没有进行实例化,类似 ...

  6. java list转成map对象_将List集合中的map对象转为List对象形式--封装类

    importjava.util.ArrayList;importjava.util.HashMap;importjava.util.Iterator;importjava.util.List;impo ...

  7. java keyset entryset 顺序_「entryset」如何遍历Map,map的keySet()和EntrySet()区别 - seo实验室...

    entryset 如何遍历Map,map的keySet()和EntrySet()区别 遍历map public static void main(String[] args) { // TODO Au ...

  8. java编写排序的代码_在Java 8之前,您编写了几行代码来对对象集合进行排序?...

    java编写排序的代码 在Java 8之前,您编写了几行代码来对对象集合进行排序? Java 8您需要多少个? 您可以在Java 8中用一行完成. 让我们看看下面的Employee类. public ...

  9. java rowmapper 通用实现_06.Teambiz中三种特殊RowMapper的使用

    Teambiz中三种特殊RowMapper的使用 作者:何杨 撰写日期:2012年2月25日 版本:1.00 更新日期: 第一部分:功能说明 针对特殊目的的查询,TeamBiz提供了一系列的RowMa ...

最新文章

  1. 【UER #8】打雪仗
  2. C语言实现克鲁斯卡尔Kruskal算法求最小生成树(附完整源码)
  3. GIT项目管理工具(part9)--保存工作区
  4. linux分区表与uboot,Linux和Uboot下eMMC boot分区读写
  5. 学计算机之路写一篇作文,我的学习之路作文(2篇)
  6. Nginx根据路径设置静态资源
  7. java c:if语句_java开发编译器:C语言逻辑控制语句if else if 的语法解析
  8. fastadmin 后台管理 时间戳字段使用
  9. oracle11g 安装在rhel5.0笔记
  10. 迅雷版本哪个好android,哪个是最好的螃蟹?适用于Android手机的迅雷体验的新版本...
  11. vs2003远程调试方法
  12. VS code安装GitLens提示GitLenswas unable to find Git. Please make sure Git is installed...报错
  13. 基于matlab的单相pwm逆变电路的仿真研究,基于MATLAB的单相PWM逆变电路的仿真研究.pdf...
  14. java18天map和线程
  15. 初级程序员晋升中级程序员,只差这7个技能
  16. mgo简介以及使用说明
  17. SAP 散装物料作用及设置
  18. java 堆外内存泄露排查
  19. notepad++使用NppExec插件找不到或无法加载主类(java)
  20. 如何快速找到自己想要的资源?

热门文章

  1. 为什么我购买了 iCloud 额外的 50g 存储空间?
  2. SSM_SpringMVC(下)
  3. 非技术人员应该学习SQL的3个原因
  4. windows下 Redis启动命令
  5. 【数据结构】基于二叉链表的二叉树结点个数的统计
  6. sensei鼠标测试软件,【SteelSeriesSenseiMLG限量版游戏鼠标评测】史上最清晰完整 游戏鼠标微动更换教程-中关村在线...
  7. 五大常用经典算法—分治算法
  8. 国家软考考出来的证书,到底有哪些帮助?
  9. 如何看待2021年秋招算法岗灰飞烟灭?
  10. 如何使用PDF编辑软件旋转PDF页面