zoukankan      html  css  js  c++  java
  • 事务管理器的创建

    package com.hope.utils;

    import javax.sql.DataSource;
    import java.sql.Connection;
    import java.sql.SQLException;

    /**
    * @author newcityman
    * @date 2019/11/21 - 20:34
    */
    public class ConnectionUtils {
    private ThreadLocal<Connection> t1 = new ThreadLocal<Connection>();

    private DataSource dataSource;

    public void setDataSource(DataSource dataSource) {
    this.dataSource = dataSource;
    }

    /**
    * 获取当前线程的连接
    * @return
    */
    public Connection getThreadConnection() {
    try {
    //1、从当前线程上获取连接
    Connection conn = t1.get();
    //2、判断当前线程上是否有连接
    if (conn == null) {
    //3、从数据源中获取连接,并且存入到线程中
    conn = dataSource.getConnection();
    t1.set(conn);
    }
    //4、返回当前线程上的连接
    return conn;
    } catch (SQLException e) {
    throw new RuntimeException("创建连接失败");
    }
    }

    /**
    * 把线程和连接解绑
    */
    public void removeConnection(){
    t1.remove();
    }

    }


    package com.hope.utils;

    import java.sql.SQLException;

    /**
    * @author newcityman
    * @date 2019/11/21 - 20:52
    */
    public class TransactionManager {

    private ConnectionUtils connectionUtils;

    public void setConnectionUtils(ConnectionUtils connectionUtils) {
    this.connectionUtils = connectionUtils;
    }

    /**
    * 开启事务
    */
    public void beainTransaction(){
    try {
    connectionUtils.getThreadConnection().setAutoCommit(false);
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }

    /**
    * 提交事务
    */
    public void commit(){
    try {
    connectionUtils.getThreadConnection().commit();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }

    /**
    * 事务回滚
    */
    public void rollback(){
    try {
    connectionUtils.getThreadConnection().rollback();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }

    /**
    * 开启事务
    */
    public void release(){
    try {
    connectionUtils.getThreadConnection().close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    }

    //bean.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--配置service-->
    <bean id="accountService" class="com.hope.service.impl.AccountServiceImpl">
    <!--注入dao-->
    <property name="accountDao" ref="accountDao"/>
    <!--注入txManager-->
    <property name="txManager" ref="txManager"/>
    </bean>
    <!--配置dao-->
    <bean id="accountDao" class="com.hope.dao.impl.AccountDaoImpl">
    <!--注入runner-->
    <property name="runner" ref="runner"/>
    <!--注入connectionUtils-->
    <property name="connectionUtils" ref="connctionUtils"/>
    </bean>
    <!--配置QueryRunner-->
    <bean id="runner" class="org.apache.commons.dbutils.QueryRunner" scope="prototype">
    </bean>
    <!-- 配置数据源 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <!--连接数据库的必备信息-->
    <property name="driverClass" value="com.mysql.jdbc.Driver"/>
    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/easy"/>
    <property name="user" value="root"/>
    <property name="password" value="123"/>
    </bean>

    <bean name="connctionUtils" class="com.hope.utils.ConnectionUtils">
    <property name="dataSource" ref="dataSource"/>
    </bean>

    <bean name="txManager" class="com.hope.utils.TransactionManager">
    <property name="connectionUtils" ref="connctionUtils"/>
    </bean>
    </beans>
  • 相关阅读:
    【接口测试】robotframework+接口测试
    【定位元素】定位页面元素之xpath详解及定位不到测试元素的常见问题
    【SQL-LEFT JOIN】
    【SQL-JOIN】
    【SQL-LIKE】
    【SQL-TOP】
    【SQL语句】SQL的三中种删除
    【SQL语句order by关键字
    【SQL语句】SQL select distinct语句
    【Robotframework连接oracle】robot连接oracle数据库
  • 原文地址:https://www.cnblogs.com/newcityboy/p/11909133.html
Copyright © 2011-2022 走看看