DBUtils (增删改查)

Posted 丿狂奔的蜗牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DBUtils (增删改查)相关的知识,希望对你有一定的参考价值。

一、 概述

DBUtilsjava编程中的数据库操作实用工具,小巧简单实用。

DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。

Dbutils三个核心功能介绍

① QueryRunner中提供对sql语句操作的API.

②ResultSetHandler接口,用于定义select操作后,怎样封装结果集.

③DbUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法

二、 QueryRunner核心类

 

①update(Connection conn, String sql, Object... params) ,用来完成表数据的增加、删除、改操作

实例如下:

public class Userdao1 {
     public void add(User user) throws SQLException{
         Connection conn = JDBCUtils.getConn();
         String sql="insert into user(uname,pwd)values(?,?)";
         QueryRunner qr = new QueryRunner();
         int i = qr.update(conn, sql, user.getUname(),user.getPwd());
         conn.close();
     }
     //删除用户信息
     public void delete(int uid) throws SQLException{
         Connection conn = JDBCUtils.getConn();
         String sql="delete from user where uid=?";
         QueryRunner qr=new QueryRunner();
         int i = qr.update(conn, sql, uid);
         conn.close();
     }
     //修改用户信息
     public void update(User user) throws SQLException{
         Connection conn = JDBCUtils.getConn();
         String  sql="update user set uname=?,pwd=? where uid=?";
         QueryRunner qr = new QueryRunner();
         int i=qr.update(conn, sql, user.getUname(),user.getPwd(),user.getUid());
         conn.close();
     }
}

创建测试类

public class Demo01 {

    public static void main(String[] args) throws SQLException {

User user=new User(); user.setUname("张三"); user.setPwd("123456"); new Userdao1().add(user); new Userdao1().delete(6); User user=new User(); user.setUname("詹姆斯"); user.setPwd("777888"); user.setUid(5); new Userdao1().update(user); } }

 ②query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params) ,用来完成表数据的查询操作

ArrayHandler               将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值
ArrayListHandler           将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。List<object[]> list 两遍增强for先遍历object数组 在遍历list集合
BeanHandler                将结果集中第一条记录封装到一个指定的javaBean中。
BeanListHandler            将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中
ColumnListHandler          将结果集中指定的列的字段值,封装到一个List集合中
ScalarHandler              它是用于单数据。例如select count(*) from 表操作。
MapHandler                 将结果集第一行封装到Map<String,Object>集合中,Key 列名, Value 该列数据
MapListHandler             将结果集每一行封装到List<Map<String,Object>>集合中,Key 列名, Value 该列数据,Map集合存储到List集合
public class Userdao1 {//arrayhadler查询
     public void get1() throws SQLException{
         String sql="select * from user";
         QueryRunner qr = new QueryRunner(MyDBUtils.getDataSource());
         Object[] obj=qr.query(sql,new ArrayHandler());
         for(Object o:obj){
             System.out.println(o);
         }
     }
     //ArrayListHandler查询
     public void get2() throws SQLException{
         String sql="select * from user";
         QueryRunner qr = new QueryRunner(MyDBUtils.getDataSource());
         List<Object[]> list=qr.query(sql,new ArrayListHandler());
         for(Object[] obj:list){
             for(Object o:obj){
                 System.out.print(o+"");
             }
             System.out.println();
         }
     }
     //BeanHandler查询 专用于结果集只有一条记录时 返回一个对象
     public void get3() throws SQLException{
//         Connection conn = JDBCUtils.getConn();
         String sql="select * from user";
         QueryRunner qr = new QueryRunner(MyDBUtils.getDataSource());
         User user=qr.query(sql,new BeanHandler<User>(User.class));
         System.out.println(user);
     }
     //BeanListHandler查询
     public void get4() throws SQLException{
//         Connection conn = JDBCUtils.getConn();
         String sql="select * from user";
         QueryRunner qr = new QueryRunner(MyDBUtils.getDataSource());
         List<User> list=qr.query(sql, new BeanListHandler<User>(User.class) );
         for(User u:list){
             System.out.println(u);
         }
//         conn.close();
     }
     //ColumnListHandler查询
     public void get5() throws SQLException{
//         Connection conn = JDBCUtils.getConn();
         String sql="select uname from user";
         QueryRunner qr = new QueryRunner(MyDBUtils.getDataSource());
         List<String> list=qr.query(sql, new ColumnListHandler<String>() );
         for(String u:list){
             System.out.println(u);
         }
     }
     //ScalarHandler查询
     public void get6() throws SQLException{
//         Connection conn = JDBCUtils.getConn();
         String sql="select count(*) from user";
         QueryRunner qr = new QueryRunner(MyDBUtils.getDataSource());
//         int count=qr.query(conn, sql, new ScalarHandler<Integer>() );
         Long count=qr.query(sql, new ScalarHandler<Long>());
         System.out.println(count.intValue());
     }
}

测试类

public class Demo01 {

    public static void main(String[] args) throws SQLException {
        new Userdao1().get1();
        new Userdao1().get2();
        new Userdao1().get3();
        new Userdao1().get4();
        new Userdao1().get5();
        new Userdao1().get6();
    }

}

数据库:

 

 

运行结果如下:

 

以上是关于DBUtils (增删改查)的主要内容,如果未能解决你的问题,请参考以下文章

commons-dbutils实现增删改查

《转载》开源工具DbUtils的使用(数据库的增删改查)

commons-dbutils实现增删改查(spring新注解)

dbutils---原理以及使用

Java Web JDBC的增删改查,C3P0等连接池,dbutils框架的使用

增删改查——QueryRunner类