1、QueryRunner中提供对sql语句操作的API. update(Connection conn, String sql, Object… params) ,用来完成表数据的增加、删除、更新操作 query(Connection conn, String sql, ResultSetHandler rsh, Object… params) ,用来完成表数据的查询操作 2、ResultSetHandler接口,用于定义select操作后,怎样封装结果集. 3、DbUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法
1、new QueryRunner(DataSource ds) 提供数据源(连接池),dbutils底层自动维护连接connection。 2、update(String sql,Object…params),执行更新数据 3、query(String sql ,ResultSetHandler rsh,Object…params) ,执行查询。
QueryRunner类的update方法介绍:
1、update(Connection conn, String sql, Object… params) ,用来完成表数据的增加、删除、更新操作 2、使用QueryRunner类,实现对数据表的insert delete update 3、调用QueryRunner类的方法 update (Connection con,String sql,Object…param) 4、Object…param 可变参数,Object类型,SQL语句会出现?占位符 5、数据库连接对象,自定义的工具类传递
DBUtils提供了一个接口ResultSetHandler,它就是用来ResultSet转换成目标类型的工具。你可以自己去实现这个接口,把ResultSet转换成你想要的类型。DBUtils提供了很多个ResultSetHandler接口的实现,这些实现已经基本够用了,我们通常不用自己去实现ResultSet接口了。
1、MapHandler:单行处理器!把结果集转换成Map<String,Object>,其中列名为键! 2、MapListHandler:多行处理器!把结果集转换成List<Map<String,Object>>; 3、BeanHandler:单行处理器!把结果集转换成Bean,该处理器需要Class参数,即Bean的类型; 4、BeanListHandler:多行处理器!把结果集转换成List; 5、ColumnListHandler:多行单列处理器!把结果集转换成List,使用ColumnListHandler时需要指定某一列的名称或编号,例如:new ColumListHandler(“name”)表示把name列的数据放到List中。 6、ScalarHandler:单行单列处理器!把结果集转换成Object。一般用于聚集查询,例如select count(*) from tab_student。
它就是一个工具类,定义了关闭资源与事务处理的方法。
代码:
添加所有用户方法
public class TestDBUtils1 { 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修改用户方法
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删除用户方法
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(); } }查询所有用户方法
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); } } }参考文档
