MySql驱动(jar包)下载:https://pan.baidu.com/s/19BYnGbO3l5MOOic5K4Ooaw密码:mwoh
第三方插件(commons-dbutils)下载:https://pan.baidu.com/s/17cyAXHZLgiayx5Y_VHvawQ密码:6om2
c3p0连接池下载(jar包,和xml配置文件): https://pan.baidu.com/s/18DodkCHFi07MQdTGACQU7Q
密码:m6fq
Demo.java:
package com.xxx.dbutils;
import java.sql.Connection;
import java.sql.SQLException;
import org.apache.commons.dbutils.QueryRunner;
import com.xxx.utils.DataSourceUtils;
// 自定义的获取DataSource和Connection的工具类public class Demo { public static void main(String[] args) {Connection conn = null;
try {
// 如果需要事务的话,就不能用DataSource(连接池)来实例化QueryRunner。
QueryRunner runner = new QueryRunner();
// 事务,不用DataSource而需要获得Connection
conn = DataSourceUtils.getConnection();
//开启事务
conn.setAutoCommit(false);
// runner执行sql语句时,需要传入开启事务的conn
runner.update(conn, "update account set money=15000 where name='tom'");
//runner.update("update account set money=15000 where name='tom'");
//提交事务
conn.commit();
} catch (SQLException e) {
try {
conn.rollback();
// 事务回滚
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
} }
}
DataSourceUtils.java(自定义的获取DataSource和Connection的工具类):
package com.xxx.utils;
import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class DataSourceUtils { // c3p0连接池
private static ComboPooledDataSource dataSource = new ComboPooledDataSource();
//获得Connection ----- 从连接池中获取
public static Connection getConnection() throws SQLException{
return dataSource.getConnection();
}
// 获取一个连接池
public static DataSource getDataSource() {
return dataSource;
}}
c3p0-config.xml(c3p0连接池配置文件):
root123com.mysql.jdbc.Driverjdbc:mysql:///数据库名
【javaSE|javaEE JDBC, dbutils插件, 事务】
推荐阅读
- Eclipse中Spring的引入
- shiro的作用和执行流程总结
- 在idea中 使tomcat中配置的虚拟路径生效
- 黑马程序员18-4(【day18集合泛型 练习与总结】)
- 05|循环得到resultset中的值
- JavaSE|JAVA8反射获取方法参数名
- javaSE 第三方插件commons-dbutils, 操作数据库的工具类, QueryRunner类, (update() 增、删、改操作)
- javaSE 第三方插件commons-dbutils, 操作数据库的工具类, QueryRunner类, (query() 查询操作)
- Windows平台Redis的安装和配置