package com.cskaoyan.JDBCDemo;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.junit.Assert;
import org.junit.Test;
import javax.sql.DataSource;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
/**
* commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,
* 它是对 JDBC 的简单封装,学习成本极低,
* 使用 dbutils 可以简化 jdbc 编码的工作量,同时也不会影响程序的性能。
*
* 使用 DBUtils 需要导入 commons-dbutils-1.7.jar。DBUtils 有三个核心的组件:
*
* 1. QueryRunner:该类提供了 DML 和 DQL 的API。
* 2. ResultSetHandler:该接口定义如何封装结果集。
* 3. DbUtils:一个简单的工具类,简化了关闭资源和事务处理。
*/
public class DBUtils {
/**
* 添加数据
* @throws Exception
*/
@Test
public void tetsInsert() throws Exception {
//该类提供了DML DQL的API
QueryRunner queryRunner = new QueryRunner(getDataSource());
String sql = "insert into user(username,password,balance)values(?,?,?)";
Object[] params ={
"yangxing","123456",2000};
int rows = queryRunner.update(sql, params);
Assert.assertEquals(1,rows);
}
/**
* 更新数据
*/
@Test
public void testUpdate() throws Exception {
QueryRunner queryRunner = new QueryRunner(getDataSource());
String sql = "update user set balance = 50 where id =?";
Object param = 333;
int row = queryRunner.update(sql, param);
Assert.assertEquals(1,row);
}
@Test
public void testDelete() throws Exception {
QueryRunner queryRunner = new QueryRunner(getDataSource());
String sql = "delete from user where id =?";
Object param = 222;
int row = queryRunner.update(sql, param);
Assert.assertEquals(1,row);
}
@Test
public void testQuery() throws Exception {
QueryRunner queryRunner = new QueryRunner(getDataSource());
String sql= "select * from user where username = ?";
Object param = "yangxing";
//User 类定义了字段变量,实现无参构造和setter
User user = queryRunner.query(sql, new BeanHandler<>(User.class), param);
System.out.println(user);
}
@Test
public void testBatch() throws Exception {
QueryRunner queryRunner = new QueryRunner(getDataSource());
String sql = "insert into user(username,password,balance) values (?,?,?)";
Object[][] params = new Object[1000][3];
for (int i = 0; i < 1000; i++) {
params[i] = new Object[]{
"user"+i,"password"+i,i};
}
int [] rowsArr = queryRunner.batch(sql,params);
}
/**
* 获取数据源
* @return 数据源
*/
private DataSource getDataSource() throws Exception {
//加载配置文件
Properties info = new Properties();
DataSource dataSource = null;
FileReader reader = new FileReader("druid.properties");
info.load(reader);
//创建数据源
dataSource = DruidDataSourceFactory.createDataSource(info);
return dataSource;
}
}
DBUntils数据库操作工具类
猜你喜欢
转载自blog.csdn.net/qq_31702655/article/details/105281081
今日推荐
周排行