一步一步学后台(三):C3P0+DBUtils简化代码
2019-03-18 本文已影响0人
itfitness
目录
目录准备
C3P0:
- C3P0简介:C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。
- C3P0下载: https://sourceforge.net/projects/c3p0/files/latest/download?source=files
-
导入项目:
将下载完的压缩文件解压找到lib目录
将除了带oracle字样的另外两个jar包导入项目中
将jar包Add to Build Path
- 配置C3P0配置文件
新建xml文件c3p0-config.xml将下面的基础配置拷贝进去,其中jdbcUrl请用自己的数据库,user和password也同样使用自己配置的(要与数据库用户名密码对应)。
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<!--默认配置-->
<default-config>
<property name="initialPoolSize">10</property>
<property name="maxIdleTime">30</property>
<property name="maxPoolSize">100</property>
<property name="minPoolSize">10</property>
<property name="maxStatements">200</property>
</default-config>
<!--配置连接池mysql-->
<named-config name="mysql">
<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbctest?useSSL=false</property>
<property name="user">root</property>
<property name="password">123</property>
<property name="initialPoolSize">10</property>
<property name="maxIdleTime">30</property>
<property name="maxPoolSize">100</property>
<property name="minPoolSize">10</property>
<property name="maxStatements">200</property>
</named-config>
</c3p0-config>
DBUtils:
- DBUtils简介:Commons DbUtils是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能。
- DBUtils下载:http://commons.apache.org/proper/commons-dbutils/download_dbutils.cgi
-
导入项目:将文件解压并倒入名字最短的jar包,然后也要Add to Buid Path
编写工具类
这里简单的写一个工具类
public class JDBCUtil {
private static ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource("mysql");//这里的mysql是与c3p0配置文件里相对应的
public static DataSource getDataSource(){
return comboPooledDataSource;
}
}
获取数据库数据
-
新建一个Bean类People(后面利用DBUtils可以将结果转为Bean类)
这里需要与数据库的字段对应。
public class People {
private int id;
private String name;
private String sex;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
- 利用DBUtils的QueryRunner查询数据
public class JDBCTest {
@Test
public void Test() throws SQLException{
QueryRunner queryRunner = new QueryRunner(JDBCUtil.getDataSource());
String sql = "select * from people where sex=? and age>?";//这里使用占位符
List<People> query = queryRunner.query(sql, new BeanListHandler<>(People.class), "男",16);//这里的查询参数可以有多个,但顺序要对应
for(People p:query){
System.out.println(p.getName()+"==");
}
}
}
-
结果展示