DBUtils框架的使用(下)
程序员文章站
2023-11-19 19:59:58
刚才讲了使用QueryRunner插入、修改、更新数据,现在来学习一下使用QueryRunner进行数据库表查询。 通过QueryRunner类的query()方法即可完成数据库表的查询操作,但是在查询的时候需要实现ResultSetHandler接口来将结果集封装成对象。可以通过自己实现接口,但很 ......
刚才讲了使用queryrunner插入、修改、更新数据,现在来学习一下使用queryrunner进行数据库表查询。
通过queryrunner类的query()方法即可完成数据库表的查询操作,但是在查询的时候需要实现resultsethandler接口来将结果集封装成对象。可以通过自己实现接口,但很显然,我们应该使用dbutils工具包提供的实现类来实现封装。
在dbutils框架中,共提供了九个resultsethandler的实现类。
- arrayhandler:把结果集中的第一行数据转成对象数组。
- arraylisthandler:把结果集中的每一行数据都转成一个对象数组,再存放到list中。
- beanhandler:将结果集中的第一行数据封装到一个对应的javabean实例中。
- beanlisthandler:将结果集中的每一行数据都封装到一个对应的javabean实例中,存放到list里。
- columnlisthandler:将结果集中某一列的数据存放到list中。
- maphandler:将结果集中的第一行数据封装到一个map里,key是列名,value就是对应的值。
- maplisthandler:将结果集中的每一行数据都封装到一个map里,然后再存放到list
- keyedhandler(name):将结果集中的每一行数据都封装到一个map里(list
- scalarhandler:将结果集中的列的信息转换到一个对象中
分别通过案例感受一下。
新建测试类resultsethandlertest
然后添加成员变量
private combopooleddatasource datasource = new combopooleddatasource();
添加arrayhandler的测试代码
@test public void testarrayhandler() throws sqlexception{ //arrayhandler 将结果集的第一行数据存入object数组 queryrunner queryrunner = new queryrunner(datasource); string sql = "select * from account"; //数组的每一个元素对应第一行数据的每一列 object[] objects = queryrunner.query(sql, new arrayhandler()); system.out.println(arrays.tostring(objects)); }
运行代码
添加arraylisthandler测试代码
@test public void testarraylisthandler() throws sqlexception{ //arraylisthandler 将结果集的每一行数据存入object数组,然后存入list queryrunner queryrunner = new queryrunner(datasource); string sql = "select * from account"; list<object[]> list = queryrunner.query(sql, new arraylisthandler()); for(object[] objects : list){ system.out.println(arrays.tostring(objects)); } }
运行代码
添加beanhandler测试代码
@test public void testbeanhandler() throws sqlexception{ //beanhandler 将结果集的第一行数据封装到javabean对象中 queryrunner queryrunner = new queryrunner(datasource); string sql = "select * from account"; //传入account.class参数是为了在方法中通过反射构造account对象实例 account account = queryrunner.query(sql, new beanhandler<account>(account.class)); system.out.println(account.getid()); system.out.println(account.getname()); system.out.println(account.getmoney()); }
运行代码
注意事项:使用beanhandler,表列名必须与bean类的属性名称一致。
添加beanlisthandler测试代码
@test public void testbeanlisthandler() throws sqlexception{ //beanlisthandler 将结果集每一条数据都封装到javabean对象,再存入list queryrunner queryrunner = new queryrunner(datasource); string sql = "select * from account"; list<account> list = queryrunner.query(sql, new beanlisthandler<account>(account.class)); for(account account : list){ system.out.print(account.getid() + "\t"); system.out.print(account.getname() + "\t"); system.out.print(account.getmoney()); system.out.println(); } }
运行代码
添加columnlisthandler测试代码
@test public void testcolumnlisthandler() throws sqlexception{ //columnlisthandler 获得结果集的某一列 queryrunner queryrunner = new queryrunner(datasource); string sql = "select * from account"; //泛型为什么写object 因为每列的类型都不一样 list<object> list = queryrunner.query(sql, new columnlisthandler("name")); system.out.println(list); }
运行代码
添加maphandler测试代码
@test public void testmaphandler() throws sqlexception{ //maphandler 将结果集中的第一行数据封装到map集合,key是列名,value是数据值 queryrunner queryrunner = new queryrunner(datasource); string sql = "select * from account"; map<string, object> map = queryrunner.query(sql, new maphandler()); system.out.println(map); }
运行代码
添加maplisthandler测试代码
@test public void testmaplisthandler() throws sqlexception { // maphandler 将结果集中的每一行数据封装到map集合,key是列名,value是数据值,再将map对象存入list queryrunner queryrunner = new queryrunner(datasource); string sql = "select * from account"; list<map<string,object>> list = queryrunner.query(sql, new maplisthandler()); for(map<string,object> map : list){ system.out.println(map); } }
运行代码
添加keyedhandler测试代码
@test public void testkeyedhandler() throws sqlexception { // keyedhandler 将结果集中的每一行数据都封装到map里,再将map存入一个map里,key可以指定为任意列 queryrunner queryrunner = new queryrunner(datasource); string sql = "select * from account"; map<object, map<string,object>> map = queryrunner.query(sql, new keyedhandler("name")); system.out.println(map); }
运行代码
添加scalarhandler测试代码
@test public void testscalarhandler() throws sqlexception{ //scalarhandler 通常保存只有一行一列的结果数据 queryrunner queryrunner = new queryrunner(datasource); string sql = "select count(*) from account"; long count = (long) queryrunner.query(sql, new scalarhandler(1)); system.out.println(count); }
运行代码
到这里,九个hanlder就介绍完毕了。
最常用的几个:
beanhandler、beanlisthandler、columnlisthandler、scalarhandler。
上一篇: 小度机器人公测了,赶紧来升级吧!
推荐阅读