dbutils
<dependency> <groupId>commons-dbutils</groupId> <artifactId>commons-dbutils</artifactId> <version>1.7</version> </dependency>
dbutils它是对JDBC的简单封装,极大简化jdbc编码的工作量
DbUtils类
提供了关闭连接,装载JDBC驱动,回滚提交事务等方法的工具类
QueryRunner类
该类简化了SQL查询,配合ResultSetHandler使用,可以完成大部分的数据库操作,重载了许多的查询,更新,批处理方法。大大减少了代码量
ResultSetHandler接口
该接口规范了对ResultSet的操作,要对结果集进行什么操作,传入ResultSetHandler接口的实现类即可。
-
ArrayHandler:把结果集中的第一行数据转成对象数组。
-
ArrayListHandler:把结果集中的每一行数据都转成一个数组,再存放到List中。
-
BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。
-
BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。
-
ColumnListHandler:将结果集中某一列的数据存放到List中。
-
KeyedHandler(name):将结果集中的每一行数据都封装到一个Map里,再把这些map再存到一个map里,其key为指定的key。
-
MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。
-
MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List
-
ScalarHandler 将ResultSet的一个列到一个对象中。
使用代码
//创建 dataSource MysqlDataSource mysqlDataSource=new MysqlDataSource(); mysqlDataSource.setServerName("host"); mysqlDataSource.setDatabaseName("dbName"); mysqlDataSource.setUser("user"); mysqlDataSource.setPassword("password"); //创建queryRunner QueryRunner queryRunner=new QueryRunner(mysqlDataSource); //无占位符的查询语句 String sql1="SELECT * FROM user WHERE id=1"; //使用map 接收查询结果 MapHandler Map<String,Object> map=queryRunner.query(sql1,new MapHandler()); for(Map.Entry<String,Object> entry:map.entrySet()){ System.out.println(entry.getKey()+"="+entry.getValue().toString()); } //有占位符的查询语句 String sql2="SELECT * user WHERE age=?"; //使用List<Map> 接收查询结果 MapListHandler List<Map<String,Object>> mapList=queryRunner.query(sql2,new MapListHandler(), "10"); for(Map<String,Object> map1:mapList){ for(Map.Entry<String,Object> entry:map1.entrySet()){ System.out.println(entry.getKey()+"="+entry.getValue().toString()); } }