zoukankan      html  css  js  c++  java
  • 使用dbutils

    环境准备:
    包结构:
    这里写图片描述

    mysql导出sql脚本:

    //product
    CREATE TABLE `product` (
      `id` int(10) NOT NULL AUTO_INCREMENT,
      `name` varchar(20) DEFAULT NULL,
      `description` varchar(20) DEFAULT NULL,
      `create_date` date DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
    ==============================
    //user
    CREATE TABLE `user` (
      `id` int(10) NOT NULL AUTO_INCREMENT,
      `username` varchar(10) DEFAULT NULL,
      `password` varchar(10) DEFAULT NULL,
      KEY `id` (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;

    ===============================
    使用dbutils:
    导入jar包:commons-dbutils-1.3.jar
    测试:

    //dbutils: jdbc 的工具类. 使用它可以更好的使用JDBC
        @Test
        public void testDbutilsUpdate(){
            //1. 创建 QueryRunner 的实例
            QueryRunner queryRunner = new QueryRunner();
    
            //2. 调用其方法进行 CRUD 操作: create read update delete
            //2.1 update(Connection, sql, args); 可以进行 CREATE、UPDATE 和 DELETE 操作
            Connection connection = null;
    
            try {
                connection = JdbcUtils.getConnection();
                 String sql="insert into product(name,description,create_date) values(?,?,?)";
            //String sql="update product set name=?,description=?,create_date=? where id=?";
            //String sql = "delete from product where id=?";
    
                queryRunner.update(connection, sql, "PRO 5","MEIZU", new Date());
            } catch (Exception e) {
                e.printStackTrace();
            } finally{
                JdbcUtils.close(connection);
            }
        }
    =======================================
    @Test
        public void testDbUtilsQuery(){
            //1. 创建 QueryRunner 的实例
            QueryRunner queryRunner = new QueryRunner();
    
            //2. 进行READ操作: 调用QueryRunne的query()方法
            Connection connection = null;
    
            try {
                connection = JdbcUtils.getConnection();
                String sql = "SELECT id, name, description as "desc", create_date as "createDate" "
                        + "FROM product";
    
                //选择合适的 ResultSetHandler. 
                ResultSetHandler<List<Product>> rsh = new BeanListHandler(Product.class);
                List<Product> products = queryRunner.query(connection, sql, rsh);
    
                System.out.println(products);
            } catch (Exception e) {
                e.printStackTrace();
            } finally{
                JdbcUtils.close(connection);
            }
        }
    ==================================
    
        @Test
        public void testDbUtilsResultSetHandler(){
            //1. 创建 QueryRunner 的实例
            QueryRunner queryRunner = new QueryRunner();
    
            //2.进行READ操作: 调用QueryRunne的query()方法
            Connection connection = null;
    
            try {
                connection = JdbcUtils.getConnection();
                String sql = "SELECT id, name, description as "desc", create_date as "createDate" "
                        + "FROM product";
    
                //具体返回什么样式的数据, 取决于传入的 ResultSetHandler 的类型.
                //1. 若传入 ArrayListHandler, 则返回的是 数组类型的 List. 
    //          ResultSetHandler rsh = new ArrayListHandler();
                //2. 若传入 MapListHandler, 则返回的是 Map 类型的 List
                ResultSetHandler rsh = new MapListHandler();
    
                //选择合适的 ResultSetHandler. 
                List results = queryRunner.query(connection, sql, rsh);
                for(Object object: results){
                    System.out.println(object);
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally{
                JdbcUtils.close(connection);
            }
        }
    
    =========================================
    @Test
        public void testDbUtilsResultHandler2(){
            //1. 创建 QueryRunner 的实例
            QueryRunner queryRunner = new QueryRunner();
    
            //2.进行READ操作: 调用QueryRunne的query()方法
            Connection connection = null;
    
            try {
                connection = JdbcUtils.getConnection();
                String sql = "SELECT id, name, description as "desc", create_date as "createDate" "
                        + "FROM product WHERE id = ?";
    
                //具体返回什么样式的数据, 取决于传入的 ResultSetHandler 的类型.
                ResultSetHandler rsh = new ArrayHandler();
    
                //选择合适的 ResultSetHandler. 
                Object results = queryRunner.query(connection, sql, rsh, 1);
                System.out.println(results);
            } catch (Exception e) {
                e.printStackTrace();
            } finally{
                JdbcUtils.close(connection);
            }
        }

    小结:
    1、 进行 UPDATE 操作(增、删、改): 调用 QueryRunner 的
    public int update(Connection conn, String sql, Object… params) 方法即可.
    2、进行 READ (查)操作: 调用 QueryRunner 的
    public T query(Connection conn, String sql, ResultSetHandler rsh,
    Object… params) 方法.

    =================================
    关于READ操作的关键点是:ResultSetHandler
    它是结果集处理器: 可以把结果集转为需要的目标类型.
    经典的实现:
    BeanHandler: 适用于返回单条数据. 把结果集转为一个 JavaBean 对象返回
    BeanListHandler: 适用于返回多条数据. 把结果集转为一个 JavaBean 的集合返回

    MapHandler: 适用于返回单条数据. 把结果集转为一个 Map 对象返回.
    MapListHandler: 适用于返回多条数据. 把结果集转为以个 Map 的 List 返回

    ==============
    此部分结果集的处理还涉及到集合知识点,需要学习,未完待续!

  • 相关阅读:
    python之enumerate枚举 第二篇(六):enumerate枚举
    git使用学习
    Git安装
    eclipse对项目整理分类
    Java基础学习总结——Java对象的序列化和反序列化
    工作代码实例
    substring与substr
    第一个jave程序-helloworld
    UI自动化
    sikuli实例
  • 原文地址:https://www.cnblogs.com/lisingshen/p/7499731.html
Copyright © 2011-2022 走看看