DBUtils使用教程

目录

1 DBUtils工具

1.1 简介DBUtils工具

1.2 使用步骤

1)导入jar包

2)使用的API

3)更新方法

4)查询方法


1 DBUtils工具

1.1 简介DBUtils工具

        DBUtils是Apache的工具,是一个对jdbc的简单封装的工具。提供了一些通用的jdbc操作方法。

1.2 使用步骤

1)导入jar包

                 commons-dbutils-1.2.jar

2)使用的API

                 QueryRunner 通过此类可以执行更新操作或者查询操作。          

                                  update(.....): 用于更新操作(DDLDML

                                  query(.....): 用于查询操作(DQL

                 ResultSetHandler接口:用于封装查询之后的结果。

                                  Object handle(ResultSet rs)  用于封装数据

                 常用的实现类:

                         ArrayHandler 把结果集的第一行的数据封装成对象数组。

                         ArrayListHandler:把结果集的每一行数据封装对象数组,把这个对象数组放入List

                         BeanHandler 把结果集的第一行数据封装成javabean

                         BeanListHandler: 把结果集的每一行数据封装成javabean,把这个javabean放入LIs

                         ScalarHandler 把结果集的第一行第一列取出。通常用于聚合函数查询。例如(count()/max()

                         如果表的字段名称和javabean的属性名称不一致时,需要自定义ResultSetHandler的实现类

3)更新方法

/**

 * 使用dbutils工具

*/

public class Demo1 {

        @Test

        public void testInsert() throws Exception{

                 ComboPooledDataSource ds  = new ComboPooledDataSource();

                 //1.创建QueryRunner对象

                 QueryRunner qr = new QueryRunner(ds);

                 //2.执行操作

                 //qr.update("INSERT INTO student(NAME,age,address) VALUES('张三11',20,'广州天河')");

                 qr.update("INSERT INTO student(NAME,age,address) VALUES(?,?,?)", new Object[]{"eric11",20,"广州天河"});

        }

       

        @Test

        public void testInsert2() throws Exception{

                 ComboPooledDataSource ds  = new ComboPooledDataSource();

                 Connection conn = ds.getConnection();

                 QueryRunner qr = new QueryRunner();

                 qr.update(conn,"INSERT INTO student(NAME,age,address) VALUES('张三22',20,'广州天河')");

                 //手动关闭连接

                 conn.close();

        }

}

4)查询方法

/**

 * dbutils执行查询操作

*/

public class Demo2 {

        /**

         * ArrayHandler: 把结果集的第一行的数据封装成对象数组。

         */

        @Test

        public void test1() throws Exception{

                 ComboPooledDataSource ds = new ComboPooledDataSource();

                 //1.创建QueryRunner

                 QueryRunner qr = new QueryRunner(ds);

                 //2.执行sql

                 Object[] arr = (Object[])qr.query("select * from student where id=?", new ArrayHandler(),new Object[]{2});

                 for(Object obj:arr){

                         System.out.println(obj);

                 }

        }

       

        /**

         * ArrayListHandler: 把结果集的每一行数据封装对象数组,把这个对象数组放入List中

         * @throws Exception

         */

        @Test

        public void test2() throws Exception{

                 ComboPooledDataSource ds = new ComboPooledDataSource();

                 //1.创建QueryRunner

                 QueryRunner qr = new QueryRunner(ds);

                 //2.执行sql

                 List<Object[]> list = (List<Object[]>)qr.query("select * from student", new ArrayListHandler());

                 for(Object[] arr:list){//一行

                         //一列

                         for(Object obj:arr){

                                  System.out.print(obj+"\t");

                         }

                         System.out.println();

                 }

        }

       

        /**

         * BeanHandler: 把结果集的第一行数据封装成javabean

         * 约定前提: 表的字段名称和javabean的属性名称保持一致!!

         */

        @Test

        public void test3() throws Exception{

                 ComboPooledDataSource ds = new ComboPooledDataSource();

                 //1.创建QueryRunner

                 QueryRunner qr = new QueryRunner(ds);

                 //2.执行sql

                 Student student = (Student)qr.query("select * from student", new BeanHandler(Student.class));

                 System.out.println(student);

        }

       

        /**

         * BeanListHandler: 把结果集的每一行数据封装成javabean,把这个javabean放入LIst中

         *   约定前提: 表的字段名称和javabean的属性名称保持一致!!

         */

        @Test

        public void test4() throws Exception{

                 ComboPooledDataSource ds = new ComboPooledDataSource();

                 //1.创建QueryRunner

                 QueryRunner qr = new QueryRunner(ds);

                 //2.执行sql

                 List<Student> list = (List<Student>)qr.query("select * from student", new BeanListHandler(Student.class));

                for (Student student : list) {

                         System.out.println(student);

                 }

        }

       

        /**

         * ScalarHandler: 把结果集的第一行第一列取出。通常用于聚合函数查询。例如(count()/max())

         */

        @Test

        public void test5() throws Exception{

                 ComboPooledDataSource ds = new ComboPooledDataSource();

                 //1.创建QueryRunner

                 QueryRunner qr = new QueryRunner(ds);

                 //2.执行sql

                 Long count = (Long)qr.query("select count(id) from student", new ScalarHandler(1));

                 System.out.println("行数: "+count);

        }

       

        /**

         * 如果表的字段名称和javabean的属性名称不一致时,需要自定义ResultSetHandler的实现类

         */

        @Test

        public void test6() throws Exception{

                 ComboPooledDataSource ds = new ComboPooledDataSource();

                 //1.创建QueryRunner

                 QueryRunner qr = new QueryRunner(ds);

                 List<Student> list = (List<Student>)qr.query("select * from student2", new MyStudentHandler());

                 for (Student student : list) {

                         System.out.println(student);

                 }

        }

}

/**

 * 自定义ResultSetHandler

*/

class MyStudentHandler implements ResultSetHandler{

        @Override

        public Object handle(ResultSet rs) throws SQLException {

                 List<Student> list = new ArrayList<Student>();

                 while(rs.next()){

                         Student s = new Student();

                         s.setId(rs.getInt("sid"));

                         s.setName(rs.getString("sname"));

                         s.setAge(rs.getInt("sage"));

                         s.setAddress(rs.getString("saddress"));

                         list.add(s);

                 }

                 return list;

        }

}

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

棉花糖老丫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值