zoukankan      html  css  js  c++  java
  • Java 学习笔记 四 -- DBUtils的使用

    一、安装 DBUtils数据库工具 和 Junit单元测试工具

    安装jar包,直接BuildPath。

    对于Junit的使用:在单元方法上方增加语句 @Test,测试时选中方法名后,右键菜单 Run as 即可。

    二、DBUtils 的 QueryRunner

      DBUtil 为上篇学习笔记中所创的工具类,DBUtils是开源数据库工具包

      (一)外部创建连接对象

    public class DBUtilsDemo01 {
    
        @Test
        public void test01() throws SQLException {
            // 1.创建执行sql的对象
            QueryRunner runner = new QueryRunner();
            String sql = "insert into t_user(username,password,realname) values('rose','123456','鲁斯')";
            // 2.外部创建连接
            Connection conn = DBUtil.getConnection();
            runner.update(conn, sql);
            conn.close();
        }
    
        @Test
        public void test02() throws SQLException {
            // 1.创建执行sql的对象
            QueryRunner runner = new QueryRunner();
            String sql = "insert into t_user(username,password,realname) values(?,?,?)";
            // 2.外部创建连接
            Connection conn = DBUtil.getConnection();
            // 3.设置查询参数并运行
            runner.update(conn, sql, "rose", "123456", "鲁西");
            conn.close();
        }
    
        @Test
        public void test03() {
            Connection conn = null;
            try {
                // 1.创建执行sql的对象
                QueryRunner runner = new QueryRunner();
                String sql = "update t_user set realname=? where id=?";
                conn = DBUtil.getConnection();
                // 2.手动管理事务
                conn.setAutoCommit(false);
                runner.update(conn, sql, "朱丽叶2", 3);
                //int i = 100/0;
                DBUtil.commit(conn);
            } catch (SQLException e) {
                DBUtil.rollback(conn);
                e.printStackTrace();
            } finally {
                DBUtil.close(conn);
            }
        }
    }

      (二)连接池构造 QueryRunner ,返回ArrayHandler

    public class DBUtilsDemo02 {
        @Test
        public void test01() throws SQLException {
            QueryRunner runner = new QueryRunner(DBUtil.getDataSource());
            Object[] arr = 
                    runner.query("select * from t_user where id=1", new ArrayHandler());
            for(Object obj : arr) {
                System.out.print(obj + "	");
            }
        }
        
        @Test
        public void test02() throws SQLException {
            QueryRunner runner = new QueryRunner(DBUtil.getDataSource());
            List<Object[]> list = 
                    runner.query("select * from t_user", new ArrayListHandler());
            for(Object[] arr : list) {
                for(Object obj : arr) {
                    System.out.print(obj + "	");
                }
                System.out.println();
            }
        }
    
        @Test
        public void test03() throws SQLException {
            QueryRunner runner = new QueryRunner(DBUtil.getDataSource());
            // runner.update("update t_user set username='role' where id=3");
            // runner.update("update t_user set username=? where id=?","rose",3);
            // runner.update("delete from t_user where id=?", 3);
            String sql = "insert into t_user(username,password,realname) values(?,?,?)";
            runner.update(sql, "rose", "123456", "鲁西");
        }
    }

      (三)返回 BeanHandler

    其中 Emp 类必须是标准类(对象有get和set方法等)

    public class DBUtilsDemo03 {
        @Test
        public void test02() throws SQLException {
            QueryRunner runner = new QueryRunner(DBUtil.getDataSource());
            Emp emp = 
                    //runner.query("select * from emp where empno=7499", new BeanHandler<>(Emp.class));
                    runner.query("select * from emp where empno=?", new BeanHandler<>(Emp.class),7499);
            System.out.println(emp.toString());
        }
        @Test
        public void test03() throws SQLException {
            QueryRunner runner = new QueryRunner(DBUtil.getDataSource());
            List<Emp> list = 
                    runner.query("select * from emp", new BeanListHandler<>(Emp.class));
            for(Emp emp : list) {
                System.out.println(emp);
            }
        }
    }

    三、ResultSetHandler 接口

    ResultSetHandler 接口可以将sql查询的结果映射到不同的数据类型上,该接口有下面几个常用的实现类:

    类名称功能描述
    ArrayHandler 将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值
    ArrayListHandler 将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组再封装到List集合中
    BeanHandler<T> 将结果集中第一条记录封装到一个指定的java对象中
    BeanListHandler<T> 将结果集中每一条记录封装到指定的java对象中,将这些对象再封装到List集合中
    ColumnListHandler<T> 将结果集中指定的列的字段值,封装到一个List集合中
    ScalarHandler<T> 它是用于单数据。例如select count(*) from 表操作
    MapHandler 将结果集第一行封装到Map集合中,key 列名, value 该列数据
    MapListHandler 将结果集封装到Map集合中,key 列名, value 该列数据, Map集合存储到List集合
  • 相关阅读:
    resolv.conf 是什么
    Cloudera Manager Free Edition 4.1 和CDH 4.1.2 简易安装教学
    bach cello
    windows 7 旗舰版 切换 中英文 界面
    geghi 教程 以lesmiserable 为例
    python 使用 tweepy 案例: PS4
    用Live Writer写博文插入程序代码的三个插件比较
    侧滑菜单
    [Android]简略的Android消息机制源码分析
    常用git命令
  • 原文地址:https://www.cnblogs.com/AardWolf/p/10949669.html
Copyright © 2011-2022 走看看