孙肖宁

DBUtils的使用
DBUtils封装了对JDBC的操作,简化了JDBC的操作,是java编程中数据库操作的实用工具。三个核心:Que...
扫描右侧二维码阅读全文
15
2019/02

DBUtils的使用

DBUtils封装了对JDBC的操作,简化了JDBC的操作,是java编程中数据库操作的实用工具。

三个核心:

  • QueryRunner中提供了对sql语句操作的API。

    • QueryRunner(DataSource ds),提供数据源(连接池),DBUtils底层自动维护连接connection。
    • update(String sql,Object... params),执行更新数据。
    • query(String sql,ResultSetHandler<T>rsh,Object...params),执行查询。
  • ResultSetHandler接口,用于定义select操作后,封装结果集。(在下面的案例中有提现)。
  • DBUtils类,这是一个工具类,定义了关闭资源与事务处理的方法。

    • closeQuietly(Connection conn)关闭连接,如果有异常,使用try进行处理。
    • commitAndCloseQuietly(Connection conn)提交并关闭连接。
    • rollbackAndCloseQuietly(Connection conn)回滚并关闭连接。

基本步骤

1.创建核心类QueryRunner
2.编写SQL语句
3.为占位符设置值
4.执行操作

案例

注意:案例使用到了C3P0连接池,不会的小伙伴请参考小编以前的文章哦。

  • 添加操作
public void testAddUser() {
        try {
            //1.创建核心类QueryRunner
            QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
            //2.编写SQL语句
            String sql = "insert into users values(null,?,?)";
            //3.为占位符设置值
            Object[] params = {"12","34"};
            //4.执行添加操作
            int rows = qr.update(sql,params);
            if (rows>0) {
                System.out.println("添加成功");
            }else {
                System.out.println("添加失败");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
  • 修改操作
public void testUpdateUserById() {
        try {
            //1.创建核心类QueryRunner
            QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
            //2.编写SQL语句
            String sql = "update users set upwd = ? where uid = ?";
            //3.为占位符设置值
            Object[] params = {"1212",1};
            //4.执行修改操作
            int rows = qr.update(sql,params);
            if(rows>0) {
                System.out.println("修改成功");
            }else {
                System.out.println("修改失败");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        
    }
  • 删除操作
public void testDeleteUserById() {
        
        try {
            //1.创建核心类QueryRunner
            QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
            //2.编写SQL语句
            String sql = "delete from Users where uid = ?";
            //3.为占位符设置值
            Object[] params = {2};
            //4,执行删除操作
            int rows = qr.update(sql,params);
            if (rows>0) {
                System.out.println("删除成功");
            }else {
                System.out.println("删除失败");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        
    }
  • 查询操作(种类较多)
public class TestDBUtils2{
    
    /**
     * 查询所有用户方法
     */
    @Test
    public void testQueryAll() {
        try {
            //1,获取核心类queryRunner
            QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
            //2.编写sql语句
            String sql = "select * from users";
            //3.执行结果查询
            List<User> users = qr.query(sql, new BeanListHandler<User>(User.class));
            //4.对结果集集合进行遍历
            for(User user : users) {
                System.out.println(user.getUname()+"---"+user.getUpwd());
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        
    }
    
    /**
     * 根据id查询用户
     */
    @Test
    public void testQueryUserById() {
        
        try {
            //1.获取核心类queryRunner
            QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
            //2.编写sql语句
            String sql = "select * from users where uid = ?";
            //3.为占位符设置值
            Object[] params = {1};
            //4.执行查询操作
            User user = qr.query(sql, new BeanHandler<User>(User.class),params);
            //5.输出结果
            System.out.println(user.getUname()+"---"+user.getUpwd());
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    
    /**
     * 查询用户的数量
     */
    @Test
    public void testQueryCount() {
        
        try {
            //1.获取核心类queryRunner
            QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
            //2.编写sql语句
            String sql = "select count(*) from users";
            //3.执行查询语句
            Long count = (Long)qr.query(sql, new ScalarHandler());
            //4.输出结果
            System.out.println(count);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    /**
     * 查询所有用户
     */
    @Test
    public void testQueryAll1() {
        
        try {
            //1.获取核心类
            QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
            //2.编写sql语句
            String sql = "select * from users";
            //3.执行查询操作
            List<Map<String, Object>> list = qr.query(sql, new MapListHandler());
            //4.对结果集进行遍历
            for (Map<String, Object> map : list) {
                System.out.println(map);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        
    }
    
    /**
     * 查询所有用户
     */
    @Test
    public void testQueryAll2() {
        
        try {
            //1.获取核心类queryRunner
            QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
            //2,编写sql
            String sql = "select * from users";
            //3.执行查询操作
            List<Object> List = qr.query(sql,new ColumnListHandler("uname"));
            //4.对结果集进行遍历
            for (Object object : List) {
                System.out.println(object);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        
    }
 }
Last modification:February 15th, 2019 at 11:08 am
If you think my article is useful to you, please feel free to appreciate

Leave a Comment