Apache的DBUtils框架的查询结果处理器的使用(ResultSetHandler接口的子类)
2016-09-12 21:34
477 查看
1。导包
(1).commons-dbcp-1.4.jar
(2)commons-dbutils-1.4.jar
(3)commons-pool-1.5.6.jar
(4)mysql-connector-java-5.0.8-bin.jar
2。数据库配置文件:
3。工具类:
4。查询结果的实现
ResultSetHandlerDemo.java文件:
运行结果:
test()1:
test2():
test3():
test4():
test5():
test6():
test7():
(1).commons-dbcp-1.4.jar
(2)commons-dbutils-1.4.jar
(3)commons-pool-1.5.6.jar
(4)mysql-connector-java-5.0.8-bin.jar
2。数据库配置文件:
#\u8FDE\u63A5\u8BBE\u7F6E driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/day18 username=root password=admin #<!-- \u521D\u59CB\u5316\u8FDE\u63A5 --> initialSize=10 #\u6700\u5927\u8FDE\u63A5\u6570\u91CF maxActive=50 #<!-- \u6700\u5927\u7A7A\u95F2\u8FDE\u63A5 --> maxIdle=20 #<!-- \u6700\u5C0F\u7A7A\u95F2\u8FDE\u63A5 --> minIdle=5 #<!-- \u8D85\u65F6\u7B49\u5F85\u65F6\u95F4\u4EE5\u6BEB\u79D2\u4E3A\u5355\u4F4D 6000\u6BEB\u79D2/1000\u7B49\u4E8E60\u79D2 --> maxWait=60000 #JDBC\u9A71\u52A8\u5EFA\u7ACB\u8FDE\u63A5\u65F6\u9644\u5E26\u7684\u8FDE\u63A5\u5C5E\u6027\u5C5E\u6027\u7684\u683C\u5F0F\u5FC5\u987B\u4E3A\u8FD9\u6837\uFF1A[\u5C5E\u6027\u540D=property;] #\u6CE8\u610F\uFF1A"user" \u4E0E "password" \u4E24\u4E2A\u5C5E\u6027\u4F1A\u88AB\u660E\u786E\u5730\u4F20\u9012\uFF0C\u56E0\u6B64\u8FD9\u91CC\u4E0D\u9700\u8981\u5305\u542B\u4ED6\u4EEC\u3002 connectionProperties=useUnicode=true;characterEncoding=utf8 #\u6307\u5B9A\u7531\u8FDE\u63A5\u6C60\u6240\u521B\u5EFA\u7684\u8FDE\u63A5\u7684\u81EA\u52A8\u63D0\u4EA4\uFF08auto-commit\uFF09\u72B6\u6001\u3002 defaultAutoCommit=true #driver default \u6307\u5B9A\u7531\u8FDE\u63A5\u6C60\u6240\u521B\u5EFA\u7684\u8FDE\u63A5\u7684\u53EA\u8BFB\uFF08read-only\uFF09\u72B6\u6001\u3002 #\u5982\u679C\u6CA1\u6709\u8BBE\u7F6E\u8BE5\u503C\uFF0C\u5219\u201CsetReadOnly\u201D\u65B9\u6CD5\u5C06\u4E0D\u88AB\u8C03\u7528\u3002\uFF08\u67D0\u4E9B\u9A71\u52A8\u5E76\u4E0D\u652F\u6301\u53EA\u8BFB\u6A21\u5F0F\uFF0C\u5982\uFF1AInformix\uFF09 defaultReadOnly= #driver default \u6307\u5B9A\u7531\u8FDE\u63A5\u6C60\u6240\u521B\u5EFA\u7684\u8FDE\u63A5\u7684\u4E8B\u52A1\u7EA7\u522B\uFF08TransactionIsolation\uFF09\u3002 #\u53EF\u7528\u503C\u4E3A\u4E0B\u5217\u4E4B\u4E00\uFF1A\uFF08\u8BE6\u60C5\u53EF\u89C1javadoc\u3002\uFF09NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE defaultTransactionIsolation=REPEATABLE_READ
3。工具类:
package com.itheima.util; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.SQLException; import java.util.Properties; import javax.sql.DataSource; import org.apache.commons.dbcp.BasicDataSourceFactory; public class DBCPUtil { private static DataSource dataSource; static{ try { InputStream in = DBCPUtil.class.getClassLoader().getResourceAsStream("dbcpconfig.properties"); Properties props = new Properties(); props.load(in); dataSource = BasicDataSourceFactory.createDataSource(props); } catch (Exception e) { throw new ExceptionInInitializerError(e); } } public static DataSource getDataSource(){ return dataSource; } public static Connection getConnection(){ try { return dataSource.getConnection(); } catch (SQLException e) { throw new RuntimeException(e); } } }
4。查询结果的实现
ResultSetHandlerDemo.java文件:
package com.itheima.dbutil; import java.util.List; import java.util.Map; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.ArrayHandler; import org.apache.commons.dbutils.handlers.ArrayListHandler; import org.apache.commons.dbutils.handlers.ColumnListHandler; import org.apache.commons.dbutils.handlers.KeyedHandler; import org.apache.commons.dbutils.handlers.MapHandler; import org.apache.commons.dbutils.handlers.MapListHandler; import org.apache.commons.dbutils.handlers.ScalarHandler; import org.junit.Test; import com.itheima.util.DBCPUtil; public class ResultSetHandlerDemo { private QueryRunner qr = new QueryRunner(DBCPUtil.getDataSource()); //ArrayHandler:适合结果只有一条的情况。把第一条记录的每列的值封装到一个Object[]数组中 @Test public void test1() throws Exception{ Object[] objs = qr.query("select * from student", new ArrayHandler()); for(Object obj:objs) System.out.println(obj); } //ArrayListHandler:适合结果有多条的情况。把每列的值封装到Object[]数组中,把Object[]放到List中 @Test public void test2() throws Exception{ List<Object[]> list = qr.query("select * from student", new ArrayListHandler()); for(Object[] objs:list){ System.out.println("----------------"); for(Object obj:objs){ System.out.println(obj); } } } //ColumnListHandler:适合取某列的值。把取到值封装到List中 @Test public void test3() throws Exception{ List<Object> list = qr.query("select * from student", new ColumnListHandler("name")); for(Object obj:list){ System.out.println(obj); } } //KeyedHandler:查询多条记录。每条记录封装到一个Map中,key:字段名,value:字段值。再把Map作为value放到另外一个Map中,该Map的key为指定的列值作为key。 @Test public void test4() throws Exception{ Map<Object,Map<String,Object>> bmap = qr.query("select * from student", new KeyedHandler("id")); for(Map.Entry<Object,Map<String,Object>> bme:bmap.entrySet()){ System.out.println("--------------------"); for(Map.Entry<String, Object> lme:bme.getValue().entrySet()){ System.out.println(lme.getKey()+"="+lme.getValue()); } } } //MapHandler:适合一条结果。封装到一个Map中,key:字段名,value:字段值 @Test public void test5() throws Exception{ Map<String,Object> map = qr.query("select * from student", new MapHandler()); for(Map.Entry<String, Object> lme:map.entrySet()){ System.out.println(lme.getKey()+"="+lme.getValue()); } } //MapListHandler:适合多条结果。把每条封装到一个Map中,key:字段名,value:字段值,在把Map封装到List中 @Test public void test6() throws Exception{ List<Map<String,Object>> list = qr.query("select * from student", new MapListHandler()); for(Map<String,Object> map:list){ System.out.println("--------------------"); for(Map.Entry<String, Object> lme:map.entrySet()){ System.out.println(lme.getKey()+"="+lme.getValue()); } } } //ScalarHandler:适合取结果只有一行和一列的情况。 @Test public void test7() throws Exception{ Object obj = qr.query("select count(*) from student", new ScalarHandler(1)); // System.out.println(obj.getClass().getName()); Long l = (Long)obj; System.out.println(l.intValue()); System.out.println(obj); } }
运行结果:
test()1:
5 yajg1 2016-09-12
test2():
----------------
5 yajg1 2016-09-12----------------
6
zhangsan
2016-09-12
----------------
15 yajg1 2016-09-12
test3():
yajg1 zhangsan yajg1
test4():
-------------------- id=5 birthday=2016-09-12 name=yajg1 -------------------- id=6 birthday=2016-09-12 name=zhangsan -------------------- id=15 birthday=2016-09-12 name=yajg1
test5():
id=5 birthday=2016-09-12 name=yajg1
test6():
-------------------- id=5 birthday=2016-09-12 name=yajg1 -------------------- id=6 birthday=2016-09-12 name=zhangsan -------------------- id=15 birthday=2016-09-12 name=yajg1
test7():
3 3
相关文章推荐
- Apache—DBUtils框架简介、DbUtils类、QueryRunner类 、ResultSetHandler接口
- 【DButils学习之】利用ResultSetHandler各实现类来处理查询结果
- Java使用apache的开源数据处理框架commons-dbutils完成查询结果集的各种处理输出(8种方式)
- 【DButils学习之】利用ResultSetHandler各实现类来处理查询结果
- 【DButils学习之】利用ResultSetHandler各实现类来处理查询结果
- 【DButils学习之】利用ResultSetHandler各实现类来处理查询结果
- 【DButils学习之】利用ResultSetHandler各实现类来处理查询结果
- 【DButils学习之】利用ResultSetHandler各实现类来处理查询结果
- 【DButils学习之】利用ResultSetHandler各实现类来处理查询结果
- 【DButils学习之】利用ResultSetHandler各实现类来处理查询结果
- 【DButils学习之】利用ResultSetHandler各实现类来处理查询结果
- 【DButils学习之】利用ResultSetHandler各实现类来处理查询结果
- 【DButils学习之】利用ResultSetHandler各实现类来处理查询结果
- 【DButils学习之】利用ResultSetHandler各实现类来处理查询结果
- 【DButils学习之】利用ResultSetHandler各实现类来处理查询结果
- 【DButils学习之】利用ResultSetHandler各实现类来处理查询结果
- 【DButils学习之】利用ResultSetHandler各实现类来处理查询结果
- 【DButils学习之】利用ResultSetHandler各实现类来处理查询结果
- 【DButils学习之】利用ResultSetHandler各实现类来处理查询结果
- 【DButils学习之】利用ResultSetHandler各实现类来处理查询结果