DBUtils:
若只使用JDBC开发,代码会有很多冗余,DBUtils是JDBC的简化开发工具包。需要使用连接池技术;
三个核心功能介绍:
1:QueryRunner中提供对sql语句操作的API;
2:ResultSetHandler接口,用于定义select操作后,怎样封装结果集
结果集处理类
使用Bean处理器需要一个JavaBean
Column处理器可以指定第几列,也可以指定列名
3:DButils类,它就是一个工具类,定义了关闭资源与食物处理的方法
JavaBean组件:
创建一个JavaBean
package cn.itheima.domain;
public class User { private int uid; private String uname; private String upassword;
public User() { }
public int getUid() { return uid; }
public void setUid(int uid) { this.uid = uid; }
public String getUname() { return uname; }
public void setUname(String uname) { this.uname = uname; }
public String getUpassword() { return upassword; }
public void setUpassword(String upassword) { this.upassword = upassword; }
}
测试类:
lib文件下导入jar文件
package cn.itheima.jdbc.test;
import java.sql.SQLException;
import org.apache.commons.dbutils.QueryRunner; import org.junit.Test;
import cn.itheima.jdbc.utils.C3P0Utils;
/** * 测试DBUtils工具类的增删改操作 * * @author Never Say Never * @date 2016年7月31日 * @version V1.0 */ public class TestDBUtils1 {
/** * 添加所有用户方法 */ @Test public void testAddUser() { try { // 1.创建核心类QueryRunner QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource()); // 2.编写SQL语句 String sql = "insert into tbl_user values(null,?,?)"; // 3.为站位符设置值 Object[] params = { "余淮", "耿耿" }; // 4.执行添加操作 int rows = qr.update(sql, params); if (rows > 0) { System.out.println("添加成功!"); } else { System.out.println("添加失败!"); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 根据id修改用户方法 * */ @Test public void testUpdateUserById() { try { // 1.创建核心类QueryRunner QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource()); // 2.编写SQL语句 String sql = "update tbl_user set upassword=? where uid=?"; // 3.为站位符设置值 Object[] params = { "xxx", 21 }; // 4.执行添加操作 int rows = qr.update(sql, params); if (rows > 0) { System.out.println("修改成功!"); } else { System.out.println("修改失败!"); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 根据id删除用户方法 */ @Test public void testDeleteUserById() { try { // 1.创建核心类QueryRunner QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource()); // 2.编写SQL语句 String sql = "delete from tbl_user where uid=?"; // 3.为站位符设置值 Object[] params = {19}; // 4.执行添加操作 int rows = qr.update(sql, params); if (rows > 0) { System.out.println("删除成功!"); } else { System.out.println("删除失败!"); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
package cn.itheima.jdbc.test;
import java.sql.SQLException; import java.util.List; import java.util.Map;
import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.BeanHandler; import org.apache.commons.dbutils.handlers.BeanListHandler; import org.apache.commons.dbutils.handlers.ColumnListHandler; import org.apache.commons.dbutils.handlers.MapListHandler; import org.apache.commons.dbutils.handlers.ScalarHandler; import org.junit.Test;
import cn.itheima.domain.User; import cn.itheima.jdbc.utils.C3P0Utils;
/** * 测试DBUtils查询操作 * * @author Never Say Never * @date 2016年7月31日 * @version V1.0 */ public class TestDBUtils2 {
/* * 查询所有用户方法 */ @Test public void testQueryAll() { try { // 1.获取核心类queryRunner QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource()); // 2.编写sql语句 String sql = "select * from tbl_user"; // 3.执行查询操作 List<User> users = qr.query(sql, new BeanListHandler<User>(User.class)); // 4.对结果集集合进行遍历 for (User user : users) { System.out.println(user.getUname() + " : " + user.getUpassword()); } } catch (SQLException e) { throw new RuntimeException(e); } } /* * 根据id查询用户方法 */ @Test public void testQueryUserById() { try { // 1.获取核心类queryRunner QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource()); // 2.编写sql语句 String sql = "select * from tbl_user where uid=?"; //3.为占位符设置值 Object[] params = {21}; // 4.执行查询操作 User user = qr.query(sql, new BeanHandler<User>(User.class), params); System.out.println(user.getUname() + " : " + user.getUpassword()); } catch (SQLException e) { throw new RuntimeException(e); } } /* * 根据所有用户的总个数 */ @Test public void testQueryCount() { try { // 1.获取核心类queryRunner QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource()); // 2.编写sql语句 String sql = "select count(*) from tbl_user"; // 4.执行查询操作 Long count = (Long) qr.query(sql, new ScalarHandler()); System.out.println(count); } catch (SQLException e) { throw new RuntimeException(e); } } /* * 查询所有用户方法 */ @Test public void testQueryAll1() { try { // 1.获取核心类queryRunner QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource()); // 2.编写sql语句 String sql = "select * from tbl_user"; // 3.执行查询操作 List<Map<String, Object>> list = qr.query(sql, new MapListHandler()); // 4.对结果集集合进行遍历 for (Map<String, Object> map : list) { System.out.println(map); } } catch (SQLException e) { throw new RuntimeException(e); } } /* * 查询所有用户名方法 */ @Test public void testQueryAll2() { try { // 1.获取核心类queryRunner QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource()); // 2.编写sql语句 String sql = "select * from tbl_user"; // 3.执行查询操作 List<Object> list = qr.query(sql, new ColumnListHandler("uname")); // 4.对结果集集合进行遍历 for (Object object : list) { System.out.println(object); } } catch (SQLException e) { throw new RuntimeException(e); } } }