DBUtils学习
来源:互联网 发布:淘宝退货要申请售后吗 编辑:程序博客网 时间:2024/05/20 15:41
一、什么是DBUtils
Commons DbUtils是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能。
作用:
DBUtils是java编程中的数据库操作实用工具,小巧简单实用,
1.对于数据表的读操作,他可以把结果转换成List,Array,Set等java集合,便于程序员操作;
2.对于数据表的写操作,也变得很简单(只需写sql语句)
3.可以使用数据源,使用JNDI,数据库连接池等技术来优化性能--重用已经构建好的数据库连接对象,而不像php,asp那样,费时费力的不断重复的构建和析构这样的对象。
二、DBUtils的三个核心对象
1、QueryRunner类
QueryRunner中提供对sql语句操作的API.它主要有三个方法
(1)query() 用于执行select
(2)0update() 用于执行insert update delete
(3)batch() 批处理
2、ResultSetHandler接口
用于定义select操作后,怎样封装结果集.(后面将详细介绍)
3、DbUtils类
它就是一个工具类,定义了关闭资源与事务处理的方法
三、DBUtils的使用介绍
1、使用步骤:
(1)导包
(2)创建QueryRunner对象
(3)使用query方法执行select语句
(4)使用ResultSeethe封装结果集
(5)使用DbUtils类释放资源
2、QueryRunner学习
(1)构造方法:
(2)还用QueryRunner对数据库操作
3、ResultSetHandler接口学习
下面为继承了该接口的类。
如果已知数据库表为:
1、ArrayHandler:适合取1条记录。把该条记录的每列值封装到一个数组中Object[]
@Test//ArrayHandler:适合取1条记录。把该条记录的每列值封装到一个数组中Object[]public void tese1() throws SQLException{QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());Object[] arr = qr.query("select * from testone", new ArrayHandler());for (Object o : arr) {System.out.println(o);}}
2、ArrayListHandler:适合取多条记录。把每条记录的每列值封装到一个数组中Object[],把数组封装到一个List中
@Test//ArrayListHandler:适合取多条记录。把每条记录的每列值封装到一个数组中Object[],把数组封装到一个List中public void tese2() throws SQLException{QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());List<Object[]> query = qr.query("select * from testone", new ArrayListHandler());for (Object[] os : query) {for (Object o : os) {System.out.println(o);}System.out.println("--------------");}}运行结果图:
3、ColumnListHandler:取某一列的数据。封装到List中。
@Test //ColumnListHandler:取某一列的数据。封装到List中。public void tese3() throws SQLException{QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());List<Object> list = qr.query("select name,money from testone", new ColumnListHandler(1));for (Object o : list) {System.out.println(o);}}运行结果图:
4、KeyedHandler:取多条记录,每一条记录封装到一个Map中,再把这个Map封装到另外一个Map中,key为指定的字段值。
@Test //KeyedHandler:取多条记录,每一条记录封装到一个Map中,再把这个Map封装到另外一个Map中,key为指定的字段值。public void tese4() throws SQLException{QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());//大Map的key是表中的某列数据,小Map中的key是表的列名,所以大Map的key是Object类型,小Map的key是String类型Map<Object,Map<String,Object>> map = qr.query("select * from testone", new KeyedHandler(1));for (Map.Entry<Object, Map<String,Object>> m : map.entrySet()) {System.out.println(m.getKey());//大Map中key值就是id列的值for (Map.Entry<String, Object> mm : m.getValue().entrySet()) {System.out.println(mm.getKey()+"\t"+mm.getValue());//取出小Map中的列名和列值}System.out.println("---------------------");}}运行结果图:
5、MapHandler:适合取1条记录。把当前记录的列名和列值放到一个Map中
@Test//MapHandler:适合取1条记录。把当前记录的列名和列值放到一个Map中public void tese5() throws SQLException{QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());Map<String,Object> map = qr.query("select * from testone where id=?", new MapHandler(),2);for (Map.Entry<String, Object> m : map.entrySet()) {System.out.println(m.getKey()+"\t"+m.getValue());}}
运行结果图:
6、MapListHandler:适合取多条记录。把每条记录封装到一个Map中,再把Map封装到List中
@Test//MapListHandler:适合取多条记录。把每条记录封装到一个Map中,再把Map封装到List中public void tese6() throws SQLException{QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());List<Map<String,Object>> list = qr.query("select * from users", new MapListHandler());for (Map<String, Object> map : list) {for (Map.Entry<String, Object> m : map.entrySet()) {System.out.println(m.getKey()+"\t"+m.getValue());}System.out.println("---------------");}}运行结果图:
7、ScalarHandler:适合取单行单列数据
@Test //ScalarHandler:适合取单行单列数据public void tese7() throws SQLException{QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());Object o = qr.query("select count(*) from users", new ScalarHandler(1));System.out.println(o.getClass().getName());}运行结果图:
8、BeanHandler
@Test //BeanHandler:适合取单行单列数据public void tese8() throws SQLException{QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());User user = qr.query("select * from users where id=?", new BeanHandler<User>(User.class),1);System.out.println(user);}运行结果图:
9、BeanListHandler
@Test //BeanListHandler public void tese9() throws SQLException{QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());List<User> list = qr.query("select * from users where id=?", new BeanListHandler<User>(User.class),1);System.out.println(list.size());}运行结果图:
四、总结
以上便是我对于DBUtils类的学习,如果其中有任何错误,请提出,谢谢!
- DbUtils学习----DbUtils类
- DbUtils学习
- DBUtils学习
- DBUtils学习
- DBUtils学习笔记一DbUtils
- 零基础学习DBUtils--DBUtils基础知识小结
- apache commons DbUtils学习
- DBUtils学习(一)
- DBUtils学习(二)
- 【DButils学习之】总结
- DbUtils学习(二)
- DbUtils学习(一)
- DBUtils学习总结
- Apache-DbUtils学习
- DBUtils学习笔记
- commons-dbutils源码学习
- DBUtils学习资源列表
- DBUtils学习----QueryRunner类
- 关于操作矩阵中索引的技巧(一)
- CentOS7上对文件,目录和分区实现磁盘配额
- 面向对象实验3-分析类
- 四个数最大值
- 【数据结构】栈的应用---四则运算表达式求值(中缀表达式与后缀表达式转换)
- DBUtils学习
- AngularJS总结
- selenium:expected [object undefined] undefined to be a string
- Java重写和重载的区别
- jdk环境变量的配置
- 百度笔试-寻找三角形
- CentOS7上软RAID的实现
- DescriptionResourcePathLocationType Project configuration is not up-to-date with pom.xml. Run pr
- 面向对象