当前位置: 移动技术网 > IT编程>开发语言>Java > DBUtils框架的使用(下)

DBUtils框架的使用(下)

2019年08月26日  | 移动技术网IT编程  | 我要评论
刚才讲了使用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),再把这些map再存到一个map里,其key为指定的key。
  • 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。

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网