依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.18</version>
</dependency>
<!-- 数据库配置相关架包 -->
<dependency>
<groupId>commons-dbutils</groupId>
<artifactId>commons-dbutils</artifactId>
<version>1.7</version>
</dependency>
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>
c3p0-config.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<!-- 默认配置,只可以出现一次 -->
<default-config>
<!-- 配置JDBC 四个基本属性 -->
<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://XXXX:3308/goods?characterEncoding=utf8&useSSL=false
</property>
<property name="user">zhangsan</property>
<property name="password">123123</property>
<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
<property name="acquireIncrement">3</property>
<!-- 初始化数据库连接池时连接的数量 -->
<property name="initialPoolSize">5</property>
<!-- 数据库连接池中的最小的数据库连接数 -->
<property name="minPoolSize">2</property>
<!-- 数据库连接池中的最大的数据库连接数 -->
<property name="maxPoolSize">10</property>
</default-config>
<named-config name="mysql">
<!-- 配置JDBC 四个基本属性 -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://XXXX:3309/goods?characterEncoding=utf8&useSSL=false
</property>
<property name="user">zhangsan</property>
<property name="password">123123</property>
<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
<property name="acquireIncrement">3</property>
<!-- 初始化数据库连接池时连接的数量 -->
<property name="initialPoolSize">5</property>
<!-- 数据库连接池中的最小的数据库连接数 -->
<property name="minPoolSize">2</property>
<!-- 数据库连接池中的最大的数据库连接数 -->
<property name="maxPoolSize">10</property>
</named-config>
<named-config name="oracle">
<!-- 配置JDBC 四个基本属性 -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://XXXX:3307/goods?characterEncoding=utf8&useSSL=true
</property>
<property name="user">zhangsan</property>
<property name="password">123123</property>
<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
<property name="acquireIncrement">3</property>
<!-- 初始化数据库连接池时连接的数量 -->
<property name="initialPoolSize">5</property>
<!-- 数据库连接池中的最小的数据库连接数 -->
<property name="minPoolSize">2</property>
<!-- 数据库连接池中的最大的数据库连接数 -->
<property name="maxPoolSize">10</property>
</named-config>
</c3p0-config>
JdbcUtils
public class JdbcUtils {
static ComboPooledDataSource ds=new ComboPooledDataSource();
static ComboPooledDataSource ds_mysql;
static ComboPooledDataSource ds_oracle;
public static DataSource getDataSources(String type) {
if(StringUtils.isEmpty(type)) {
return ds;
}else if ("mysql".equalsIgnoreCase(type)) {
ds_mysql=new ComboPooledDataSource("mysql");
return ds_mysql;
}else if ("oracle".equalsIgnoreCase(type)) {
ds_oracle=new ComboPooledDataSource();
return ds_oracle;
}
return ds;
}
public static DataSource getDataSources() {
return getDataSources("");
}
}
DbutilsTest
public class DbUtilsTest {
public static void main(String[] args) throws Exception {
findOne("09b2c272-88f8-4f27-b9aa-a1f16ea7f6d4");
}
public static void findList() throws Exception {
// ComboPooledDataSource ds = new ComboPooledDataSource();
QueryRunner run = new QueryRunner(JdbcUtils.getDataSources());
String sql = "select * from t_user_test";
List list = run.query(sql, new BeanListHandler(User.class));
System.out.println(list);
Long timemillis = System.currentTimeMillis();
String file = System.getProperty("user.dir") + File.separator + "data" + File.separator + "testfan_"
+ timemillis + ".xlsx";
ExcelUtils.getInstance().exportObjects2Excel(list, User.class, file);
}
public static void findOne(String uid) throws Exception {
// ComboPooledDataSource ds = new ComboPooledDataSource();
QueryRunner run = new QueryRunner(JdbcUtils.getDataSources());
String sql = "select * from t_user_test where uid=?";
User user= run.query(sql,new BeanHandler(User.class),uid);
System.out.println(user);
}
}
dbutils各种Handler
• ArrayHandler:把结果集中的第一行数据转成对象数组。
• ArrayListHandler:把结果集中的每一行数据都转成一个对象数组,再存放到List中。
• BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。
• BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存 放到List里。
• MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对 应的值。
• MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List。
• ColumnListHandler:将结果集中某一列的数据存放到List中。
• KeyedHandler:将结果集中的每一行数据都封装到一个Map里,然后再根据指定的 key把每个Map再存放到一个Map里。
• ScalarHandler:将结果集中某一条记录的其中某一列的数据存成Object。