DbUtils组件

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
	 */
	@Test
	public 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
	 */
	@Test
	public 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
	 */
	@Test
	public 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>() {
			@Override
			public 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>>() {
			@Override
			public 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: 查询返回单个对象
	@Test
	public void testQueryOne() throws Exception {
		//sql
		String 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: 查询返回单个对象
	@Test
	public void testQueryList() throws Exception {
		//sql
		String 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());//查询返回结果的第一条记录封装为map
		System.out.println(map.toString());
		
		sql = "select count(*) from users";
		Long num = qr.query(conn, sql, new ScalarHandler<Long>());//查询返回结果记录的第一行的第一列  (在聚合函数统计的时候用)
		//测试输出
		System.out.println(num);
		//关闭
		conn.close();
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值