所需要包的下载
提取码:c17b
连接池概念
使用方法:
(1)在新建一个java project
(2)再在相应的project新建一个命名为lib的folder
(3)导入连接池所需的dbcp 的包和依赖包(build path)
(4)导入连接池的配置文件,新建一个source folder命名为config,再在此新建一个file命名为db.properties,添加内容为
#连接设置
driverClassName=com.mysql.cj.jdbc.Driver//加载驱动
url=jdbc:mysql://localhost:3306/demo?serverTimezone=UTC//url换成你对应的数据库url
username=root//数据库名称
password=root//数据库密码
#初始连接
initialSize=10
#最大连接数
maxActive=50
#最大空闲连接
maxIdle=20
#最小空闲连接
minIdle=5
# 等待超时单位毫秒
maxWait=60000
# 编码
connectionProperties=useUnicode=true;characterEncoding=utf8
# 自动提交
defaultAutoCommit=true
# 不只读
defaultReadOnly=false
# 隔离级别
defaultTransactionIsolation=READ_UNCOMMITTED
使用连接池
public class DataSourceDemo {
public static void main(String[] args) throws Exception {
//1.读取配置文件
Properties properties = new Properties();
//存在缺陷 :硬编码
//properties.load(new FileInputStream("config/db.properties"));
//通过加载jvm的DataSourceDemo.class 去反向查找类加载器,在通过类加载器,去根据相对路径查(相对源码包)找指定的db.properties
properties.load(DataSourceDemo.class.getClassLoader().getResourceAsStream("aa/db.properties"));
//2.创建数据源(创建连接池)
DataSource dataSource = BasicDataSourceFactory.createDataSource(properties);
System.out.println(dataSource);
//3.从数据源中获取一个连接
Connection connection = dataSource.getConnection();
System.out.println(connection);
//4.关闭连接,讲连接还给连接池
connection.close();
}
}
使用jdbc的dbutils框架
原生的 jdbc 代码过于繁琐,重复代码过多;这里采用 Dbutils jdbc 框架解决这个问题
(1):添加dbutils.jar包
定义一个DbUtils类添加代码,过程和上面的使用连接池技术类似,只不过添加了一个返回DataSource的方法
public class DbUtils {
//1.定义数据源的属性
private static DataSource dataSource;
//2.加载配置文件
private static Properties properties = new Properties();
//3.在加载类的时候加载数据源
static {
try {
properties.load(DataSourceDemo.class.getClassLoader().getResourceAsStream("db.properties"));
dataSource = BasicDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
e.printStackTrace();
}
}
//4.提供获取数据源的方法
public static DataSource getDataSource() {
return dataSource;
}
}
再在调用dbutils方法进行数据库的增删改查
public class DbutilsDemo {
//1.建立QueryRunner对象
private QueryRunner queryRunner = new QueryRunner(DbUtils.getDataSource());
//2.测试添加方法
@Test
public void add() throws SQLException {
queryRunner.update("insert into users(name,money) values(?,?)","小李",100);
}
@Test
public void del() throws SQLException {
queryRunner.update("delete from users where id=?",1);
}
@Test
public void update() throws SQLException {
queryRunner.update("update users set name=? where id=?","小红红",2);
}
@Test
public void query() throws Exception {
User user = queryRunner.query("select * from users where id=?",new BeanHandler<User>(User.class), 4);
System.out.println(user);
}
@Test
public void query2() throws Exception {
List<User> list = queryRunner.query("select * from users",new BeanListHandler<User>(User.class));
System.out.println(list);
}
}