目录
一.创建Druit数据库连接池properties文件
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/jdbc_db
username=root
password=anc123
initialSize=10
maxActive=20
二.创建数据库连接池工具类
public class JDBCUtils {
//druid数据库连接池创建数据连接对象
/**
* 采用静态类加载的方式在类第一次运行时创建数据库连接池,保证在程序未关闭之前,数据库连接池是存在的
* 并且是不会被多次创建的,也不会被销毁的
* @private static DataSource source :静态数据库连接池
*/
private static DataSource source;
static {
try{
//创建properties对象,用来封装从文件中获取的流数据
Properties pros = new Properties();
//采用类加载方式获取文件的内容,并封装成流
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("Druid.properties");
//将流传入到pros对象中
pros.load(is);
//利用工厂类创建数据库连接池
source = DruidDataSourceFactory.createDataSource(pros);
}catch (Exception e){
e.printStackTrace();
}
}
public static Connection getConnByDruid() throws Exception {
//所有的数据连接池要想被java所使用,都必须先实现sun公司提供的一个接口DateSource
//获取数据库连接池对象
Connection conn = source.getConnection();
return conn;
}
}
三.测试数据库连接池是否创建成功
/**
* druid测试数据库连接池技术类
*/
public class TestDruid {
@Test
public void getDruidConn() throws Exception {
Properties pros = new Properties();
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("Druid.properties");
pros.load(is);
//所有的数据连接池要想被java所使用,都必须先实现sun公司提供的一个接口DateSource
//获取数据库连接池对象
DataSource source = DruidDataSourceFactory.createDataSource(pros);
Connection conn = source.getConnection();
System.out.println(conn);
}
}
四.利用Dbutils.jar,使用封装好的增删改查方法
public class Testdbutil {
//使用QueryRunner和数据库连接池实现数据库的增删改
@Test
public void testQueryRunnerUpdate() {
Connection conn = null;
try {
QueryRunner queryRunner = new QueryRunner();
conn = JDBCUtils.getConnByDruid();
String sql = "insert into user_tab (id,name,balance) values(?,?,?)";
int count = queryRunner.update(conn, sql, 154, "吴用", 10001);
}catch (Exception e){
e.printStackTrace();
}finally {
JDBCUtils.closeResource(conn,null);
}
}
//使用QueryRunner实现数据的单条查询
@Test
public void testQueryRunnerSelect() throws SQLException {
Connection conn = null;
try{
conn = JDBCUtils.getConnByDruid();
QueryRunner queryRunner = new QueryRunner();
String sql = "select id,name,balance from user_tab where id = ?";
BeanHandler beanHandler = new BeanHandler<User>(User.class);
Object query = queryRunner.query(conn, sql, beanHandler, 109);
System.out.println(query);
}catch (Exception e){
e.printStackTrace();
}finally {
JDBCUtils.closeResource(conn,null);
}
}
//使用QueryRunner实现查询多条语句
@Test
public void testQueryRunnerSelectManyInfo() throws SQLException {
Connection conn = null;
try{
conn = JDBCUtils.getConnByDruid();
QueryRunner queryRunner = new QueryRunner();
String sql = "select id,name,balance from user_tab where id > ?";
BeanListHandler<User> listHandler = new BeanListHandler<>(User.class);
List<User> query = queryRunner.query(conn, sql, listHandler, 106);
query.forEach(System.out::println);
}catch (Exception e){
e.printStackTrace();
}finally {
JDBCUtils.closeResource(conn,null);
}
}
//使用QueryRunner实现特殊查询
@Test
public void testQueryRunnerSelect3() {
Connection conn = null;
try{
conn = JDBCUtils.getConnByDruid();
QueryRunner queryRunner = new QueryRunner();
String sql = "select count(*) from user_tab";
ScalarHandler<Object> handler = new ScalarHandler<>();
Long query =(Long) queryRunner.query(conn, sql, handler);
System.out.println("user表中有"+query+"条数据");
}catch (Exception e){
e.printStackTrace();
}finally {
//悄悄的关闭资源
DbUtils.closeQuietly(conn);
}
}
}
五.测试查询结果