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);
}
}