service+utils事务模板

来源:互联网 发布:酒吧骰子软件 编辑:程序博客网 时间:2024/06/06 11:04
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 {    //配置文件的默认配置,要求必须给出c3p0-config.xml    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 {        /*         *  1.给connection赋值         *  2.设置手动提交         */        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);    }}