ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

DBUtils工具类的使用

2021-09-24 20:32:38  阅读:172  来源: 互联网

标签:qr new public QueryRunner 使用 query DBUtils 查询 工具


DBUtils概述:

        是Apache组织提供的一个对JDBC进行简单封装的开源工具,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能

常用的API:

        一、创建QueryRunner对象,我们使用的也是QueryRunner对象的API
        二、QueryRunner执行增删改的操作,API
            - public int update(String sql, Object... params):执行增删改的sql语句,params参数是可变参数,参数的个数取决于sql语句中的?的个数
            ps:     queryRunner.update("insert into user values(null,?,?,?)“,"张三","123456","小三");
        三、执行查询的sql语句的API
            - public <T> T query(String sql, ResultSetHandler<T> rsh, Object... params)
            执行查询的操作,sql语句和后面的params可变参数要一一对应,
            ResultSetHandler<T> rsh:表示是结果集处理者,是一个接口

使用DBUtils完成增删改:

        c3p0配置文件

<c3p0-config>
    <default-config>
        <property name="DriverClass">com.mysql.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/mybase_1?characterEncoding=utf8</property>
        <property name="user">root</property>
        <property name="password">rootroot</property>
        <property name="initialPoolSize">5</property>
    </default-config>
</c3p0-config>
public class Tests {
    public static void main (String[] args) {
        /*
        *   分析:
        *       1、导包
        *       2、创建QueryRunner对象,实例化参数中传入DataSource
        *       3、调用update方法完成增删改
        * */

    }

    // 增
    @Test
    public void insert() throws SQLException {
        DataSource dataSource = c3p0Util.getDataSource();
        // 1.创建QueryRunner对象,传入
        QueryRunner qr = new QueryRunner(dataSource);
        // 2.调用update方法
        int i = qr.update("insert into users values(null,?,?,?)", "王七", "111111", "小七");
        System.out.println("受影响的行数: " + i);
    }

    // 删
    @Test
    public void delete() throws SQLException {
        QueryRunner qr = new QueryRunner(c3p0Util.getDataSource());
        int i = qr.update("delete from users where id = ?", "6");
        System.out.println("受影响的行数:" + i);
    }

    // 改
    @Test
    public void update() throws SQLException {
        QueryRunner qr = new QueryRunner(c3p0Util.getDataSource());
        int i = qr.update("update users set username = ? where id = ?", "李四", "4");
        System.out.println("受影响的行数" + i);
    }

使用DBUtils完成查询

            ResultSetHandler接口的实现类,列举几个常用的

ArrayHandler:适合查询结果是一条记录的,会把这条记录的数据封装到一个object数组中
BeanHandler:适合查询结果是一条记录的,会把这条记录的数据封装到一个javaBean中
MapHandler:适合拆线呢结果是一条记录的,会把这条记录的数据封装到一个Map集合中

ArrayListHandler:适合查询结果是多条记录的,会把每条记录的数据封装到一个object数组中,然后把这些数组添加到List集合中
BeanListHandler:适合查询结果是多条记录的,会把每条记录的数据封装到一个javaBean对象中,然后把这些javaBean对象添加到List集合中
MapListHandler:适合查询结果是多条记录的,会把每条记录的数据封装到一个Map集合中,然后把这些Map集合添加到List集合中

KeyedHandler:适合查询的结果是条件记录的,会把每条记录的诗句封装到一个Map集合中,然后把这些Map集合添加到另一个Map集合中

ColumnListHandler:适合查询的结果是单列多条记数据,会把该列的所有数据存储到List集合中

ScalarHandler:适合查询的结果是单个值的,会把这个值封装成一个对象  
// 查询结果是一条记录的【 ArrayHandler】
    @Test
    public void select1() throws SQLException {
        // 1.创建QueryRunner对象,传入连接池
        QueryRunner qr = new QueryRunner(c3p0Util.getDataSource());
        // 2.调用query方法
        Object[] query = qr.query("select * from user where id = ?", new ArrayHandler(), 1);
        System.out.println(Arrays.toString(query));
    }

    // 查询结果是一条记录的【 BeanHandler】
    @Test
    public void select2() throws SQLException {
        // 1.创建QueryRunner对象,传入连接池
        QueryRunner qr = new QueryRunner(c3p0Util.getDataSource());
        // 2.调用query方法
        User user = qr.query("select * from users where id = ?", new BeanHandler<User>(User.class), 3);
        System.out.println(user);
    }

    // 查询结果是一条记录的【 MapHandler】
    @Test
    public void select3() throws SQLException {
        // 1.创建QueryRunner对象,传入连接池
        QueryRunner qr = new QueryRunner(c3p0Util.getDataSource());
        // 2.调用query方法
        Map<String, Object> map = qr.query("select * from users where id = ?", new MapHandler(), 3);
        System.out.println(map);
    }

    // 查询结果是多条记录的【ArrayListHandler】
    @Test
    public void select4() throws SQLException {
        // 1.创建QueryRunner对象,传入连接池
        QueryRunner qr = new QueryRunner(c3p0Util.getDataSource());
        // 2.调用query方法
        List<Object[]> list = qr.query("select * from users", new ArrayListHandler());
        for (Object[] objects : list) {
            System.out.println(Arrays.toString(objects));
        }
    }

    // 查询结果是多条记录的【BeanListHandler】
    @Test
    public void select5() throws SQLException {
        // 1.创建QueryRunner对象,传入连接池
        QueryRunner qr = new QueryRunner(c3p0Util.getDataSource());
        // 2.调用query方法
        List<User> list = qr.query("select * from users", new BeanListHandler<User>(User.class));
        for (User user : list) {
            System.out.println(user);
        }
    }

    // 查询结果是多条记录的【MapListHandler】
    @Test
    public void select6() throws SQLException {
        // 1.创建QueryRunner对象,传入连接池
        QueryRunner qr = new QueryRunner(c3p0Util.getDataSource());
        // 2.调用query方法
        List<Map<String, Object>> list = qr.query("select * from users", new MapListHandler());
        for (Map<String, Object> map : list) {
            System.out.println(map);
        }
    }

    // 查询结果是多条记录的【KeyedHandler】
    @Test
    public void select7() throws SQLException {
        // 1.创建QueryRunner对象,传入连接池
        QueryRunner qr = new QueryRunner(c3p0Util.getDataSource());
        // 2.调用query方法
        Map<Object, Map<String, Object>> map = qr.query("select * from users", new KeyedHandler());
        Set<Object> keys = map.keySet();
        for (Object key : keys) {
            Map<String, Object> map1 = map.get(key);
            System.out.println(key+":"+map1);
        }
    }

    // 查询结果是单列多行记录的【ColumnListHandler】
    @Test
    public void select8() throws SQLException {
        // 1.创建QueryRunner对象,传入连接池
        QueryRunner qr = new QueryRunner(c3p0Util.getDataSource());
        // 2.调用query方法
        List<Object> list = qr.query("select username from users", new ColumnListHandler());
        System.out.println(list);
    }

    // 查询结果是单列单行的记录【ScalarHandler】
    @Test
    public void select9() throws SQLException {
        // 1.创建QueryRunner对象,传入连接池
        QueryRunner qr = new QueryRunner(c3p0Util.getDataSource());
        // 2.调用query方法
        Long count = (Long)qr.query("select count(*) from users", new ScalarHandler());
        System.out.println(count);

    }

标签:qr,new,public,QueryRunner,使用,query,DBUtils,查询,工具
来源: https://blog.csdn.net/m0_60489526/article/details/120462441

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有