C3P0及DBUtils工具类
Posted lilsuen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C3P0及DBUtils工具类相关的知识,希望对你有一定的参考价值。
C3P0连接池
Maven仓库下载地址:(jar包)
https://mvnrepository.com/artifact/com.mchange/c3p0
https://mvnrepository.com/artifact/com.mchange/mchange-commons-java
如何配置C3P0
1.创建c3p0-config.xml(名称必须为c3p0-config.xml)
<?xml version="1.0" encoding="utf-8" ?>
<c3p0-config>
<default-config>
<!--连接数据库的四大件-->
<property name="user">root</property>
<property name="password">Sys0626.</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/feige</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<!--数据库连接池的参数-->
<!--增量为3-->
<property name="initialPoolSize">3</property>
<!--池的最大连接数-->
<property name="maxPoolSize">100</property>
<!--池的最小连接数-->
<property name="minPoolSize">2</property>
</default-config>
</c3p0-config>
2.创建一个类,测试获取数据库连接对象
public static void main(String[] args) throws SQLException {
//ComboPooledDataSource的无参构造方法会默认寻找src目录下的c3p0-config.xml文件
ComboPooledDataSource ds = new ComboPooledDataSource("c3p0-config.xml");
Connection connection = ds.getConnection();
//成功获取到数据库连接对象
System.out.println(connection);
}
DBUtils 工具类的使用
Commons DbUtils是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能
DBUtils工具下载
在Maven仓库中下载.jar以及依赖:
https://mvnrepository.com/artifact/commons-dbutils/commons-dbutils
QueryRunner
QueryRunner中包含4个构造方法:
public QueryRunner() {
}
public QueryRunner(boolean pmdKnownBroken) {
super(pmdKnownBroken);
}
public QueryRunner(DataSource ds) {
super(ds);
}
public QueryRunner(DataSource ds, boolean pmdKnownBroken) {
super(ds, pmdKnownBroken);
}
如何使用?
- 首先声明JDBC的四大件(driver,url,user,password)
- 创建QueryRunner对象
- 使用QueryRunner中的方法操作数据库
通过使用QueryRunner的无参构造
/**
* 使用QueryRunner向数据库中添加一条数据
*/
public static void main(String[] args) {
String driver = "com.mysql.jdbc.Driver";// 驱动路径
String url = "jdbc:mysql://localhost:3306/feige";// 数据库地址
String user = "root";// 访问数据库的用户名
String password = "Sys0626.";// 用户密码
try {
Class.forName(driver);
//创建连接对象
Connection conn = DriverManager.getConnection(url,user,password);
//1.创建QueryRunner对象
QueryRunner queryRunner = new QueryRunner();
String sql = "insert into user(uid,uname,upwd,utel) value(?,?,?,?)";
//2.使用QueryRunner中的update()方法,传递连接对象、SQL语句、给?占位符赋值的数据
int nums = queryRunner.update(conn,sql,6,"卡卡","123","61231244354");
System.out.println("成功插入"+nums+"条数据");
} catch (Exception e) {
e.printStackTrace();
}
}
通过使用QueryRunner的有参构造
public static void main(String[] args) {
String driver = "com.mysql.jdbc.Driver";// 驱动路径
String url = "jdbc:mysql://localhost:3306/feige";// 数据库地址
String user = "root";// 访问数据库的用户名
String password = "Sys0626.";// 用户密码
try {
Class.forName(driver);
//创建连接对象
Connection conn = DriverManager.getConnection(url,user,password);
//1.创建QueryRunner对象
QueryRunner queryRunner = new QueryRunner(new ComboPooledDataSource());
String sql = "select * from user";
//2.使用QueryRunner中的query()方法,传递连接对象、SQL语句、给?占位符赋值的数据
List<Map<String, Object>> query =
queryRunner.query(conn, sql, new MapListHandler());
//遍历集合
query.forEach(i -> System.out.println(i));
} catch (Exception e) {
e.printStackTrace();
}
}
ArrayHandler:将结果集中的第一条记录封装到Object[]数组中,数组中的每一个元素即使这条记录中的每一个字段的值
ArrayListHandler:将结果集中的每一条记录封装到Object[]数组中,将这些数组再封装到List集合中
BeanHandler:将结果集中的第一条记录封装到一个指定的javabean中
BeanListHandler:将结果集中每一条记录封装到javabean中,将这些javabean再封装到List集合中
ColumnListHandler:将结果集中指定列的字段值封装到一个List集合中
KeyedHandler:将结果集中的每一条记录封装到Map<String,Object>,再讲这个map集合作为另一个Map的value,另一个Map集合的key是指定的字段的值
MapHandler:将结果集中的第一条记录封装到Map<String,Object>集合中,key就是字段名称,value就是字段的值
MapListHandler:将结果集中的每一条记录封装到Map<String,Object>集合中,key就是字段名称,value就是字段的值,再将这些Map封装到List集合中
ScalarHandler:它是用于单数据,列如:select count(1) from 表操作
以上是关于C3P0及DBUtils工具类的主要内容,如果未能解决你的问题,请参考以下文章
知了堂学习心得浅谈c3p0连接池和dbutils工具类的使用