zoukankan      html  css  js  c++  java
  • DButils

    DBUtils

    什么是DBUtils

      DBUtils是一个实用小巧的工具,封装了JDBC.简化了JDBC的操作.
      对于数据库的读操作,只需要知道sql语句即可.
      DBUtils会将查询的结果集以指定的方式封装起来,比如List, javaBean等.同时支持数据源技术.使用时需要引入DButils的jar包:
    

    点我获取:) 密码:f6l6

    DBUtils的API

    QueryRunner对象

    • 1.对象描述
      该对象用来提供执行增删改查的方法.

    • 2.方法
      query() 查询方法
      update() 增删改方法

    ResultSetHandler对象(接口)

    • 1.对象描述
      用来对查询的结果集进行封装
    • 2.该接口常用实现类
      • ArrayHandler
        适合结果集是一行数据,该实现类会将这行数据封装成一个数组对象,元素即为查询出来的字段值.
      • ArrayListHandler
        适合结果集是多行数据,会将这些数据封装成一个List集合,该集合的元素是数组,数组即为每行数据
      • ColumnListHandler
        适合结果集是多行单列,会将这些数据封装到一个List集合
      • KeyedHandler
        适合取多条数据,会将每条数据封装成一个map集合,最后再把这些map集合封装成大map中
      • MapHandler
        适合结果集是一条数据,封装到map集合中
      • MapListHandler
        适合取多条数据,会将每条数据封装成一个map集合,最后再把这些map集合封装成List中
      • ScalarHandler
        适合取单行单列数据,比如聚合函数
      • BeanHandler
        适合取单行数据,将数据封装成对象
      • BeanListHandler
        适合取多行数据,将每行数据封装成一个对象,再把这些对象封装成一个List集合

    举个栗子BeanListHandler

    public class Demo {
        public static void main(String[] args) throws SQLException {
            //执行查询
            //创建QueryRunner对象
            QueryRunner queryRunner = new QueryRunner();
            Connection connection = JDBCUtil.getConnection();      //此方法是自定义实现的参考连接池那篇随笔
            //查询多行,并封装成对象,再放进List集合中
            List<Employee> list = queryRunner.query(connection, "select * from emp", new BeanListHandler<Employee>(Employee.class));
            
                for(Enployee e:list){
                   System.out.println(e);
                }
          }
    }
    

    栗子BeanHandler

                 //执行查询
                 //创建QueryRunner对象
            QueryRunner queryRunner = new QueryRunner();
            Connection connection = JDBCUtil.getConnection();
                //查询一行,封装成对象
            Employee emp = queryRunner.query(connection, "select * from emp where e_id = ?", new BeanHandler<Employee>(Employee.class), 1);  //此处的1是where语句等号后面的?,做参数
    
    

    栗子KeyedHandler

            //执行查询
            //创建QueryRunner对象
            QueryRunner queryRunner = new QueryRunner();
            Connection connection = JDBCUtil.getConnection();
            Map<Object, Map<String, Object>> map = queryRunner.query(connection, "select * from emp", new KeyedHandler(2));
          //遍历map集合
            Set<Map.Entry<Object, Map<String, Object>>> set = map.entrySet();
            for(Map.Entry<Object, Map<String, Object>> entry : set){
             Object bigKey = entry.getKey();
               Map<String, Object> smallMap = entry.getValue();
                System.out.println(bigKey);     //关羽
               Set<String> smallSet = smallMap.keySet();
                for(String smallKey : smallSet) {
                    Object value = smallMap.get(smallKey);
                    System.out.println(smallKey + ":" + value);
                }
           }
    

    栗子ScalarHandler

             //执行查询
            //创建QueryRunner对象
            QueryRunner queryRunner = new QueryRunner();
            Connection connection = JDBCUtil.getConnection();
            //聚合函数
           long num = (long) queryRunner.query(connection, "select count(*) from emp", new ScalarHandler());
            System.out.println(num);
    

    栗子:

            //执行查询
            //创建QueryRunner对象
            QueryRunner queryRunner = new QueryRunner();
            Connection connection = JDBCUtil.getConnection();
          //增
            Employee employee = new Employee();
            employee.setE_id(18);
            employee.setE_name("吕布");
            employee.setE_salary(10000.0);
            employee.setE_did(1);
            employee.setHiretime(new Date());
            employee.setE_job("staff");
    
    
            Object[] param = {employee.getE_id(), employee.getE_name(), employee.getE_salary(), employee.getE_job(), employee.getE_did(), employee.getHiretime()};
            int row = queryRunner.update(connection, "delete from emp where e_name = ?", employee.getE_name());
            System.out.println(row);
    
    
            JDBCUtil.close(connection);
    
    
    频频回头的人注定走不了远路。
  • 相关阅读:
    2018 ACM 网络选拔赛 徐州赛区
    2018 ACM 网络选拔赛 焦作赛区
    2018 ACM 网络选拔赛 沈阳赛区
    poj 2289 网络流 and 二分查找
    poj 2446 二分图最大匹配
    poj 1469 二分图最大匹配
    poj 3249 拓扑排序 and 动态规划
    poj 3687 拓扑排序
    poj 2585 拓扑排序
    poj 1094 拓扑排序
  • 原文地址:https://www.cnblogs.com/CHENFANgY/p/13051008.html
Copyright © 2011-2022 走看看