commons-dbutils-1.3

commons-dbutils-1.3插件的使用:

插件的使用
一、commons-dbutils-1.3的使用
Apache提供的一个对JDBC进行简单封装的开源工具类库,
它能够简化JDBC应用程序的开发,同时也不会影响程序的性能。

二、为什么需要Dbutils ?

在使用Dbutils 之前,我们Dao层使用的技术是JDBC,那么分析一下JDBC的弊端:
①数据库链接对象、sql语句操作对象,封装结果集对象,这三个对象会重复定义
②封装数据的代码重复,而且操作复杂,代码量大
③释放资源的代码重复

三、主要的类

QueryRunner:SQL语句的操作对象,可以设置查询结果集的封装策略,线程安全。
构造方法:
	①QueryRunner():创建一个与数据库无关的QueryRunner对象,后期再操作数据库的会后,			  需要手动给一个Connection对象,它可以手动控制事务。 
	  Connection.setAutoCommit(false); 设置手动管理事务 
	  Connection.commit(); 提交事务 
	②QueryRunner(DataSource ds):创建一个与数据库关联的queryRunner对象,
		后期再操作数据库的时候,不需要Connection对象,自动管理事务。 
	DataSource:数据库连接池对象。
构造函数与增删改查方法的组合: 
QueryRunner() 
	update(Connection conn, String sql, Object... params)
	query(Connection conn, String sql,ResultSetHandler rsh, Object... params) 			QueryRunner(DataSource ds) 
	update(String sql, Object... params)
	query(String sql, ResultSetHandler rsh, Object... params)

四、ResultSetHandle的实现类

ResultSetHandle:封装数据的策略对象------将封装结果集中的数据,转换到另一个对象
策略:封装数据到对象的方式(示例:将数据库保存在User、保存到数组、保存到集合)
方法介绍:handle(ResultSet rs)

DbUtils给我们提供了10个ResultSetHandler实现类,分别是:
①ArrayHandler: 将查询结果的第一行数据,保存到Object数组中
②ArrayListHandler 将查询的结果,每一行先封装到Object数组中,然后将数据存入List集合
③BeanHandler 将查询结果的一行数据,封装到user对象
④BeanListHandler 将查询结果的每一行封装到user对象,然后再存入List集合
⑤ColumnListHandler 查询指定字段所有的值封装到List集合中
⑥MapHandler 将查询结果的第一行数据封装到map结合
⑦MapListHandler 将查询结果的每一行封装到map集合,再将map集合存入List集合
⑧BeanMapHandler 将查询结果的每一行数据,封装到User对象,再存入mao集合中
⑨KeyedHandler 将查询的结果的每一行数据,封装到map1,然后将map1集合(有多个)存入 map2集合(只有一个)
⑩ScalarHandler 查询指定对象的指定字段的值或者是查询封装类似count、avg、max、min、 sum…函数的执行结果
以上10个ResultSetHandler实现类,常用的BeanHandler、BeanListHandler和ScalarHandler

代码实现:

@Test
     public void test1() {
     	try {
            // 查询操作
           QueryRunner qr = new QueryRunner(JDBCUtilsDruid2.getDS());
            String sql = "SELECT ?,?,?,? FROM emps where id = ?";
            Student stu = qr.query(sql, new BeanHandler<>(Student.class), "id","name","gender","salary","id=1");

//            for (Student stu:list) {
//                System.out.println(stu);
//            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Test
    public void test2() {
        // 增删改操作

        String sql = "UPDATE emps SET NAME=?,salary=? WHERE id = ?";
        try {
            QueryRunner qr = new QueryRunner(JDBCUtilsDruid2.getDS());
            qr.update(sql, "花花",26344, 5);
        } catch (Exception throwables) {
            throwables.printStackTrace();
        }
    }

原文地址

你可能感兴趣的:(MySQL学习)