一、 概述
DBUtils是java编程中的数据库操作实用工具,小巧简单实用。
DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。
Dbutils三个核心功能介绍
① QueryRunner中提供对sql语句操作的API.
②ResultSetHandler接口,用于定义select操作后,怎样封装结果集.
③DbUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法
二、 QueryRunner核心类
①update(Connection conn, String sql, Object... params) ,用来完成表数据的增加、删除、改操作
实例如下:
public class Userdao1 { public void add(User user) throws SQLException{ Connection conn = JDBCUtils.getConn(); String sql="insert into user(uname,pwd)values(?,?)"; QueryRunner qr = new QueryRunner(); int i = qr.update(conn, sql, user.getUname(),user.getPwd()); conn.close(); } //删除用户信息 public void delete(int uid) throws SQLException{ Connection conn = JDBCUtils.getConn(); String sql="delete from user where uid=?"; QueryRunner qr=new QueryRunner(); int i = qr.update(conn, sql, uid); conn.close(); } //修改用户信息 public void update(User user) throws SQLException{ Connection conn = JDBCUtils.getConn(); String sql="update user set uname=?,pwd=? where uid=?"; QueryRunner qr = new QueryRunner(); int i=qr.update(conn, sql, user.getUname(),user.getPwd(),user.getUid()); conn.close(); } }
创建测试类
public class Demo01 { public static void main(String[] args) throws SQLException {
User user=new User(); user.setUname("张三"); user.setPwd("123456"); new Userdao1().add(user); new Userdao1().delete(6); User user=new User(); user.setUname("詹姆斯"); user.setPwd("777888"); user.setUid(5); new Userdao1().update(user); } }
②query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params) ,用来完成表数据的查询操作
ArrayHandler 将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值 ArrayListHandler 将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。List<object[]> list 两遍增强for先遍历object数组 在遍历list集合 BeanHandler 将结果集中第一条记录封装到一个指定的javaBean中。 BeanListHandler 将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中 ColumnListHandler 将结果集中指定的列的字段值,封装到一个List集合中 ScalarHandler 它是用于单数据。例如select count(*) from 表操作。 MapHandler 将结果集第一行封装到Map<String,Object>集合中,Key 列名, Value 该列数据 MapListHandler 将结果集每一行封装到List<Map<String,Object>>集合中,Key 列名, Value 该列数据,Map集合存储到List集合
public class Userdao1 {//arrayhadler查询 public void get1() throws SQLException{ String sql="select * from user"; QueryRunner qr = new QueryRunner(MyDBUtils.getDataSource()); Object[] obj=qr.query(sql,new ArrayHandler()); for(Object o:obj){ System.out.println(o); } } //ArrayListHandler查询 public void get2() throws SQLException{ String sql="select * from user"; QueryRunner qr = new QueryRunner(MyDBUtils.getDataSource()); List<Object[]> list=qr.query(sql,new ArrayListHandler()); for(Object[] obj:list){ for(Object o:obj){ System.out.print(o+""); } System.out.println(); } } //BeanHandler查询 专用于结果集只有一条记录时 返回一个对象 public void get3() throws SQLException{ // Connection conn = JDBCUtils.getConn(); String sql="select * from user"; QueryRunner qr = new QueryRunner(MyDBUtils.getDataSource()); User user=qr.query(sql,new BeanHandler<User>(User.class)); System.out.println(user); } //BeanListHandler查询 public void get4() throws SQLException{ // Connection conn = JDBCUtils.getConn(); String sql="select * from user"; QueryRunner qr = new QueryRunner(MyDBUtils.getDataSource()); List<User> list=qr.query(sql, new BeanListHandler<User>(User.class) ); for(User u:list){ System.out.println(u); } // conn.close(); } //ColumnListHandler查询 public void get5() throws SQLException{ // Connection conn = JDBCUtils.getConn(); String sql="select uname from user"; QueryRunner qr = new QueryRunner(MyDBUtils.getDataSource()); List<String> list=qr.query(sql, new ColumnListHandler<String>() ); for(String u:list){ System.out.println(u); } } //ScalarHandler查询 public void get6() throws SQLException{ // Connection conn = JDBCUtils.getConn(); String sql="select count(*) from user"; QueryRunner qr = new QueryRunner(MyDBUtils.getDataSource()); // int count=qr.query(conn, sql, new ScalarHandler<Integer>() ); Long count=qr.query(sql, new ScalarHandler<Long>()); System.out.println(count.intValue()); } }
测试类
public class Demo01 { public static void main(String[] args) throws SQLException { new Userdao1().get1(); new Userdao1().get2(); new Userdao1().get3(); new Userdao1().get4(); new Userdao1().get5(); new Userdao1().get6(); } }
数据库:
运行结果如下: