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 + "\t"); } } @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 + "\t"); } 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查询的结果映射到不同的数据类型上,该接口有下面几个常用的实现类:
类名称 | 功能描述 |
---|---|
将结果集中的第一条记录封装到一个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集合 |
作 者:月 暮
出 处:https://www.cnblogs.com/AardWolf/
特此声明:欢迎园子的大大们指正错误,共同进步。如有问题或建议,也请各位大佬多多赐教!如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
出 处:https://www.cnblogs.com/AardWolf/
特此声明:欢迎园子的大大们指正错误,共同进步。如有问题或建议,也请各位大佬多多赐教!如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。