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

三个核心:

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

    • QueryRunner(DataSource ds),提供数据源(连接池),DBUtils底层自动维护连接connection。
    • update(String sql,Object... params),执行更新数据。
    • query(String sql,ResultSetHandlerrsh,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 15, 2019
If you think my article is useful to you, please feel free to appreciate