DBUtils 框架介绍

DBUtils

1、QueryRunner 框架核心类 ,所有数据库操作都是必须通过 QueryRunner 进行的

2、ResultSetHandler 结果集封装接口,完成将ResultSet 结果集 封装为一个Java对象

3、DbUtils 工具类 提供驱动管理、事务管理、释放资源等一系列公共方法

QueryRunner 与 ResultSetHandler 一起使用,完成数据表增删改查

构造器:

QueryRunner() -------- 没有传递连接池给DBUtils 框架,框架不能获得数据库连接,接下来每个操作,必须将数据库连接传给框架  (手动管理事务)

QueryRunner(DataSource ds)  ---- 将连接池给DBUtils框架,以后每个操作,都会从连接池中获取一个新的连接  (每条SQL 一个单独的事务)

更新操作 insert update delete

public int update(Connection conn, String sql, Object... params) ---- 手动管理事务,没有将连接池提供框架,传入连接

public int update(String sql, Object... params) ----- 将连接池交给框架,由框架管理事务,不需要传入连接

查询操作 select

public Object query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params)

public Object query(String sql, ResultSetHandler<T> rsh, Object... params)

1、需要手动管理事务

QueryRunner()

public int update(Connection conn, String sql, Object... params)

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

2、由框架管理事务 (每条SQL都是一个单独事务)

QueryRunner(DataSource ds)

public int update(String sql, Object... params)

public Object query(String sql, ResultSetHandler<T> rsh, Object... params)

DBUtils 工具的 `增删改` 实例:

	@Test
	public void test_insert() throws SQLException {
		// 1. 创建 QueryRunner 对象, 同时将 `数据库` 对象传入
		QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());
		// 2. 执行 update 方法
		String sql = "insert into user values(?,?,?,?);";
		Object[] params = {5, "小七", "123", "xiaoqi@itcast.cn"};
		queryRunner.update(sql, params);
	}

	@Test
	public void test_delete() throws SQLException {
		// 1. 创建 QueryRunner 对象, 同时将 `数据库` 对象传入
		QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());
		// 2. 执行 update 方法
		String sql = "delete from user where id=?;";
		queryRunner.update(sql, 5);
	}

	@Test
	public void test_update() throws SQLException {
		// 1. 创建 QueryRunner 对象, 同时将 `数据库` 对象传入
		QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());
		// 2. 执行 update 方法
		String sql = "update user set username=?, password=? where id=?;";
		Object[] params = {"李四", "888", 2};
		queryRunner.update(sql, params);
	}

	@Test
	public void test_query() throws SQLException {
		// 1. 创建 QueryRunner 对象, 同时将 `数据库` 对象传入
		QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());
		// 2. 执行 query 方法
		String sql = "select * from user where id = ?;";
		User user = queryRunner.query(sql, new ResultSetHandler<User>(){

			@Override
			public User handle(ResultSet rs) throws SQLException {
				if (rs.next()) {
					int id = rs.getInt("id");
					String username = rs.getString("username");
					String password = rs.getString("password");
					String email = rs.getString("email");
					User user = new User();
					user.setId(id);
					user.setUsername(username);
					user.setPassword(password);
					user.setEmail(email);
					return user;
				}
				return null;
			}
		}, 3);
		System.out.println(user);
	}

	@Test
	public void test_query() throws SQLException {
		// 1. 创建 QueryRunner 对象, 同时将 `数据库` 对象传入
		QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());
		// 2. 执行 query 方法
		String sql = "select * from user;";
		List<User> list = queryRunner.query(sql, new ResultSetHandler<List<User>>(){
			@Override
			public List<User> handle(ResultSet rs) throws SQLException {
				List<User> list = new ArrayList<User>();
				User user = null;
				while (rs.next()) {
					user = new User();
					int id = rs.getInt("id");
					String username = rs.getString("username");
					String password = rs.getString("password");
					String email = rs.getString("email");
					user.setId(id);
					user.setUsername(username);
					user.setPassword(password);
					user.setEmail(email);
					list.add(user);
				}
				return list;
			}
		});
		for (User user : list) {
			System.out.println(user);
		}
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值