package com.ymh.jdbc;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.jetbrains.annotations.Contract;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
/**
* @author cobblepot.ymh on 2017/10/11 下午7:48.
*/
public class JdbcUtils {
private static ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
private static Connection connection = null;
/**
* 使用连接池返回一个连接对象
* @return
*/
public static Connection getConnection() throws SQLException {
if(connection != null){
return connection;
}
return comboPooledDataSource.getConnection();
}
/**
* 返回连接池对象
*/
@Contract(pure = true)
public static DataSource getDataSource(){
return comboPooledDataSource;
}
/**
* 开启事务
* 1.获取事务,设置setAutoCommit(false)
* 2.还要保证dao中使用的连接是我们刚刚创建的
*
* 1.创建一个Connection,设置为手动提交
* 2.把这个Connection给dao用
* 3.还要让commitTransaction颧rollbackTransaction可以获取到
*/
public static void beginTransaction() throws SQLException {
connection = getConnection();
connection.setAutoCommit(false);
}
/**
* 提交事务
* 1.获取beginTransaction提供的Connection,然后调用commit方法
*/
public static void commitTransaction() throws SQLException {
connection.commit();
connection.close();
}
public static void bollbackTransaction() throws SQLException {
connection.rollback();
connection.close();
}
}
package com.ymh.jdbc;
import org.apache.commons.dbutils.QueryRunner;
import java.sql.Connection;
import java.sql.SQLException;
/**
* @author cobblepot.ymh on 2017/10/11 下午8:37.
*/
public class AccountDao {
public static void update(String name, double money) throws SQLException {
QueryRunner queryRunner = new QueryRunner();
String sql = "update balance set balance = balance + ? where name = ?";
Object[] params = {money, name};
Connection connection = JdbcUtils.getConnection();
queryRunner.update(sql,params);
}
}