DbUtils组件

来源:互联网 发布:poker适合编程吗 编辑:程序博客网 时间:2024/05/01 19:47

DbUtils组件

作用

      简化jdbc操作

使用包

      下载组件,引入jar文件 : commons-dbutils-1.6.jar点击打开链接

API

|-- DbUtils   关闭资源、加载驱动

|-- QueryRunner   组件的核心工具类:定义了所有的与数据库操作的方法(查询、更新)

       Int  update(Connection conn, String sql, Object param);   执行更新带一个占位符的sql

       Int  update(Connection conn, String sql, Object…  param); 执行更新带多个占位符的sql

       Int[]  batch(Connection conn, String sql, Object[][] params)        批处理

       T  query(Connection conn ,String sql, ResultSetHandler<T> rsh, Object... params)   查询方法

  

       Int  update( String sql, Object param); 

       Int  update( String sql, Object…  param);

       Int[]  batch( String sql, Object[][] params)      

注意: 如果调用DbUtils组件的操作数据库方法,没有传入连接对象,那么在实例化QueryRunner对象的时候需要传入数据源对象: QueryRunner qr = new QueryRunner(ds);

 

DbUtils提供的封装结果的一些Handler对象:

       1)  BeanHandler: 查询返回单个对象

       2)  BeanListHandler: 查询返回list集合,集合元素是指定的对象

       3)  ArrayHandler, 查询返回结果记录的第一行,封装对对象数组, 即返回:Object[]

       4)  ArrayListHandler, 把查询的每一行都封装为对象数组,再添加到list集合中

       5)  ScalarHandler 查询返回结果记录的第一行的第一列  (在聚合函数统计的时候用)

       6)  MapHandler  查询返回结果的第一条记录封装为map


更新案例
package com.cn.dbUtils;import java.sql.Connection;import org.apache.commons.dbutils.QueryRunner;import org.junit.Test;import com.cn.util.JdbcUtil;public class UpdateDemo {private Connection conn;/** * 更新 * @throws Exception */@Testpublic void testUpdate() throws Exception {String sql = "delete from users where id = ?";//获取连接对象conn = JdbcUtil.getConnection();//创建DbUtils核心工具类对象QueryRunner qr = new QueryRunner();//更新。Execute an SQL INSERT, UPDATE, or DELETE query with a single replacement parameter.qr.update(conn, sql, 9);conn.close();}/** *  更新批处理 * @throws Exception */@Testpublic void testBatch() throws Exception {String sql = "insert into users(name, password) values(?,?)";//获取连接conn = JdbcUtil.getConnection();//创建DbUtils核心工具类对象QueryRunner qr = new QueryRunner();//批量处理qr.batch(conn, sql, new Object[][]{{"user1", "pwd1"},{"user2", "pwd2"},{"user3", "pwd3"}});//关闭资源conn.close();}}


查询案例

package com.cn.dbUtils;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import java.util.Map;import org.apache.commons.dbutils.QueryRunner;import org.apache.commons.dbutils.ResultSetHandler;import org.apache.commons.dbutils.handlers.ArrayListHandler;import org.apache.commons.dbutils.handlers.BeanHandler;import org.apache.commons.dbutils.handlers.MapHandler;import org.apache.commons.dbutils.handlers.ScalarHandler;import org.junit.Test;import com.cn.entity.User;import com.cn.util.JdbcUtil;public class QueryDemo {private Connection conn;/** * 一、查询,自定义结果集封装数据 * @throws Exception */@Testpublic void testQuery() throws Exception {//获取连接conn = JdbcUtil.getConnection();//sql语句String sql = "select * from users where id = ?";QueryRunner qr = new QueryRunner();/*ArrayListHandler list = new ArrayListHandler();List<Object[]> list2 = qr.query(conn, sql, list);for(Object[] objs : list2){for(int i=0; i<objs.length; i++){System.out.print(objs[i] + "\t");}System.out.println();}*/User user = qr.query(conn, sql, new ResultSetHandler<User>() {@Overridepublic User handle(ResultSet rs) throws SQLException {while(rs.next()){User user = new User();user.setId(rs.getInt("id"));user.setName(rs.getString("name"));user.setPassword(rs.getString("password"));return user;}return null;}}, 3);sql = "select * from users";List<User> list = qr.query(conn, sql, new ResultSetHandler<List<User>>() {@Overridepublic List<User> handle(ResultSet rs) throws SQLException {List<User> list = new ArrayList<User>();while(rs.next()){User user = new User();user.setId(rs.getInt("id"));user.setName(rs.getString("name"));user.setPassword(rs.getString("password"));list.add(user);}return list;}});//测试System.out.println(user);System.out.println(list.toString());//关闭conn.close();}/** * 二、查询, 使用组件提供的结果集对象封装数据 * @throws Exception *///2.1 BeanHandler: 查询返回单个对象@Testpublic void testQueryOne() throws Exception {//sqlString sql = "select * from users where id = ?";//获取连接conn = JdbcUtil.getConnection();//创建QueryRunner对象QueryRunner qr = new QueryRunner();//查询返回单个对象User user = qr.query(conn, sql, new BeanHandler<>(User.class), 10);//测试输出System.out.println(user);//关闭conn.close();}//2.3 BeanListHandler: 查询返回单个对象@Testpublic void testQueryList() throws Exception {//sqlString sql = "select * from users";//获取连接conn = JdbcUtil.getConnection();//创建QueryRunner对象QueryRunner qr = new QueryRunner();//查询返回单个对象//List<User> list = qr.query(conn, sql, new BeanListHandler<User>(User.class));//查询返回list集合,集合元素是指定的对象//System.out.println(list.toString());//Map<String, User> map = qr.query(conn, sql, new BeanMapHandler<String,User>(User.class));//查询返回map集合,集合元素是指定的对象//System.out.println(map.toString());//List<Object[]> arrList = qr.query(conn, sql, new ArrayListHandler()); //把查询的每一行都封装为对象数组,再添加到list集合中////测试输出//for(int i=0; i<arrList.size(); i++){//Object[] objs = arrList.get(i);//for(Object obj : objs){//System.out.print(obj.toString() + "\t");//}//System.out.println();//}Map<String, Object> map = qr.query(conn, sql, new MapHandler());//查询返回结果的第一条记录封装为mapSystem.out.println(map.toString());sql = "select count(*) from users";Long num = qr.query(conn, sql, new ScalarHandler<Long>());//查询返回结果记录的第一行的第一列  (在聚合函数统计的时候用)//测试输出System.out.println(num);//关闭conn.close();}}


0 0
原创粉丝点击