文档章节

使用JDBC连接数据库,查询结果转成List或者Map(臃肿版)

火龙战士
 火龙战士
发布于 2015/07/27 17:51
字数 406
阅读 537
收藏 0

/**

* 把查询的结果转换成List

* @param  rs

* @return  list

*/

protected List<Map<String, Object>> fullToList(ResultSet rs) {

ArrayList list = new ArrayList();

try {

int iColumn = rs.getMetaData().getColumnCount();

while (rs.next()) {

Map<String, Object> map = new LinkedHashMap<String, Object>();

for (int i = 1; i <= iColumn; i++) {

String tmpkey = rs.getMetaData().getColumnName(i);// 通过索引找到行的名字


String[] tmps = tmpkey.split("_");// 分割所有含"_"字符,返回数组

String key = "";

for (int j = 0; j < tmps.length; j++) {

if (j == 0) {

key += tmps[j].toLowerCase();// 转换为小写

} else {

key += tmps[j].substring(0, 1).toUpperCase() + tmps[j].substring(1).toLowerCase();

}

}


Object val = null;

// switch行类型

switch (rs.getMetaData().getColumnType(i)) {

case Types.DATE:

val = rs.getDate(i);

break;

case Types.DOUBLE:

if (rs.getObject(i) == null)

val = null;

else

val = rs.getDouble(i);

break;

case Types.NUMERIC:

if (rs.getObject(i) == null)

val = null;

else

val = rs.getDouble(i);

break;

case Types.DECIMAL:

if (rs.getObject(i) == null)

val = null;

else

val = rs.getDouble(i);

break;

case Types.INTEGER:

if (rs.getObject(i) == null)

val = null;

else

val = rs.getInt(i);

break;

default:

val = rs.getString(i);

break;

}


if (null != val) {

// map找找不到指定键便设置个

if (!map.containsKey(key)) {

map.put(key, val);

}

}

}

list.add(map);

}

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

if (rs != null)

rs.close();

rs = null;

} catch (SQLException e) {

e.printStackTrace();

}

}

return list;

}


/**

* 把查询的结果转换成Map

* @param  rs

* @return  map

*/

protected Map<String, Object> fullToMap(ResultSet rs) {

Map<String, Object> map = new TreeMap<String, Object>();

try {

int iColumn = rs.getMetaData().getColumnCount();

while (rs.next()) {

for (int i = 1; i <= iColumn; i++) {

String tmpkey = rs.getMetaData().getColumnName(i);


String[] tmps = tmpkey.split("_");

String key = "";

for (int j = 0; j < tmps.length; j++) {

if (j == 0) {

key += tmps[j].toLowerCase();

} else {

key += tmps[j].substring(0, 1).toUpperCase() + tmps[j].substring(1).toLowerCase();

}

}


Object val = null;

switch (rs.getMetaData().getColumnType(i)) {

case Types.DATE:

val = rs.getDate(i);

break;

default:

val = rs.getString(i);

break;

}

if (null != val) {

if (!map.containsKey(key)) {

map.put(key, val);

}

}

}

break;

}

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

if (rs != null)

rs.close();

rs = null;

} catch (SQLException e) {

e.printStackTrace();

}

}

return map;

}


© 著作权归作者所有

火龙战士

火龙战士

粉丝 117
博文 134
码字总数 100239
作品 0
北京
后端工程师
私信 提问
使用JDBC连接数据库,查询结果转成List或者Map(简洁版)

使用JDBC连接数据库,查询结果转成List或者Map(臃肿版): http://my.oschina.net/zhengweishan/blog/484377 这个感觉不是很好:然后改成下面的这种方式: public static List<Map<String, O...

火龙战士
2015/08/19
0
2
Play 2.0 用户指南 - 访问SQL数据库 -- 针对Scala开发者

配置JDBC连接池 Play 2.0 提供了一个内置插件来管理连接池。你可以配置多个数据库。 为了使用数据库插件,在conf/application文件中配置连接池。依照惯例,默认的JDBC数据源命名为 default:...

大东哥
2012/03/20
0
1
java基础专栏—DBUtils(2)

DBUtils 简化开发的冗余代码 QueryRunner中提供SQL语句操作API ResultSetHandler接口,用于定义select操作后怎样处理结果集 DBUtils对于一切事物的关闭类 是线程安全的 事务 将对个Sql操作封...

T-newcomer
2017/10/20
0
0
commons-DBUtils使用方式简介 2

SQLJavaMySQLJDBCBean 1.使用commons DButils组件对数据库进行查询。 首先使用数据源以及本组件进行数据库的连接,创建QueryRunner类型的对象。 使用数组,对sql语句中的占位符进行填充。 创...

王阔
2012/08/03
0
0
Spring之jdbc Template实现CRUD操作

Spring为各种持久化技术都提供了简单操作的模板回调。比如jdbc、hibernate、Mybatis以及JPA等。 这里我们就以JDBC为例,看看JDBC template怎么实现CRUD操作。 JdbcTemplate主要提供以下几类方...

Java攻城玩家
2018/05/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JavaConfig版

中心思想:去xml配置文件。 在Spirng Boot和Spring Cloud中,大量使用了注解与JavaConfig。 xml文件 对应的Java类 spring.xml SpringConfig.java spring-mvc.xml SpringMvcConfig.java web.x...

流小文
40分钟前
4
0
Go 定时器内部实现原理剖析

前言 前面我们介绍了一次性定时器Timer和周期性定时器Ticker,这两种定时器内部实现机制相同。创建定时器的协程并不负责计时,而是把任务交给系统协程,系统协程统一处理所有的定时器。 本节...

恋恋美食
45分钟前
0
0
分布式协调神器 ZooKeeper 之整体概述

ZooKeeper 最早起源于雅虎研究院的一个研究小组。当时,雅虎内部很多大型系统基本都需要依赖一个类似的系统来进行分布式协调,但是这些系统往往都存在分布式单点问题。所以,雅虎的开发人员就...

别打我会飞
46分钟前
1
0
Linux learn(三)

6. Linux文件与目录管理(续上一篇) 查看文件类型 file file 文件名 例如: 文件搜索 which($PATH查询执行档) 结构: which [-a] command 选项参数: -a: 将所有PATH目录中可以找到的指令均列...

lazy~
50分钟前
1
0
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。

//二叉搜索树条件左子树<根<右子树 //后序遍历说明最后一个元素是该二叉树的根节点 //1 找到该树的左子树 //2 判断右子树是否都大于根的值 //3 同样操作,该根的左右子树是否成立 public cla...

南桥北木
52分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部