詳解Spring整合mybatis--Spring中的事務管理(xml形式)
更新時間:2023年11月24日 14:29:11 作者:Kbaor
這篇文章主要介紹了Spring整合mybatis--Spring中的事務管理(xml形式),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
形式)
引入依賴
<properties> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.source>1.8</maven.compiler.source> <spring.version>5.3.20</spring.version> <mysql.version>8.0.31</mysql.version> <mybatis.version>3.5.4</mybatis.version> <mybatis.spring.version>1.3.2</mybatis.spring.version> <lombok.version>1.18.30</lombok.version> <commons-dbcp2.version>2.11.0</commons-dbcp2.version> <aspectjweaver.version>1.9.7</aspectjweaver.version> </properties> <dependencies> <!--spring基礎(chǔ)依賴--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <!--spring連接數(shù)據(jù)庫--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <!--添加mybatis依賴--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <!--mybatis與spring整合--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>${mybatis.spring.version}</version> </dependency> <!--事務的依賴--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> <!--lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> </dependency> <!--數(shù)據(jù)庫連接池--> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-dbcp2</artifactId> <version>${commons-dbcp2.version}</version> </dependency> <!--切面編程框架--> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>${aspectjweaver.version}</version> </dependency> </dependencies>
引入事務的命名空間
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" 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 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> </beans>
事務的相關(guān)配置
<!-- 事務管理數(shù)據(jù)源的配置--> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <!--配置事務--> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <!--配置事務的屬性 1. name: 指定的哪些方式進行事務管理(這些方式指的事service中的方法) 1.1 * 表示所有的方法都需要進行事務管理 1.2 save* 表示save開頭的方式需要進行事務管理 2. propagation: 傳播級別 2.1 REQUIRED 如果當前沒有事務,就新建一個事務,如果已經(jīng)存在一個事務中,就加入到這個事務中。這是最常見的選擇。 3. isolation: 隔離級別 --> <tx:attributes> <tx:method name="*" propagation="REQUIRED" isolation="DEFAULT"/> </tx:attributes> </tx:advice> <!--使用AOP編程進行事務的配置--> <aop:config> <aop:advisor advice-ref="txAdvice" pointcut="execution(* com.bboy.service.impl.*.*(..))"/> </aop:config>
application.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" 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 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"> <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/qinmanage"/> <property name="username" value="root"/> <property name="password" value="127003"/> </bean> <!-- 事務管理數(shù)據(jù)源的配置--> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <!--配置事務--> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <!--配置事務的屬性 1. name: 指定的哪些方式進行事務管理(這些方式指的事service中的方法) 1.1 * 表示所有的方法都需要進行事務管理 1.2 save* 表示save開頭的方式需要進行事務管理 2. propagation: 傳播級別 2.1 REQUIRED 如果當前沒有事務,就新建一個事務,如果已經(jīng)存在一個事務中,就加入到這個事務中。這是最常見的選擇。 3. isolation: 隔離級別 --> <tx:attributes> <tx:method name="*" propagation="REQUIRED" isolation="DEFAULT"/> </tx:attributes> </tx:advice> <!--使用AOP編程進行事務的配置--> <aop:config> <aop:advisor advice-ref="txAdvice" pointcut="execution(* com.bboy.service.impl.*.*(..))"/> </aop:config> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="typeAliasesPackage" value="com.bboy.pojo"/> <property name="mapperLocations" value="mapper/*.xml"/> <property name="dataSource" ref="dataSource"/> </bean> <bean id="accountMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="mapperInterface" value="com.bboy.mapper.AccountMapper"/> <property name="sqlSessionFactory" ref="sqlSessionFactory"/> </bean> <bean id="accountService" class="com.bboy.service.impl.AccountServiceImpl"> <property name="accountMapper" ref="accountMapper"/> </bean> </beans>
AccountMapper.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.bboy.mapper.AccountMapper"> <update id="updateId1"> update t_account set money=money-${money} where id=${id} </update> <update id="updateId2"> update t_account set money=money+${money} where id=${id} </update> </mapper>
service
AccountService
package com.bboy.service; public interface AccountService { public int pay(int id_1,int id_2,int money); }
AccountServiceImpl
package com.bboy.service.impl; import com.bboy.mapper.AccountMapper; import com.bboy.service.AccountService; /** * @類描述: * @作者:秦帥 * @時間:2023/11/24 0024 10:48:11 */ public class AccountServiceImpl implements AccountService { private AccountMapper accountMapper; public void setAccountMapper(AccountMapper accountMapper) { this.accountMapper = accountMapper; } @Override public int pay(int id_1, int id_2, int money) { //-:轉(zhuǎn)出 id_1 accountMapper.updateId1(id_1, money); //-停電了 // int res = 1/0 ; //-:轉(zhuǎn)入 id_2 accountMapper.updateId2(id_2, money); return 0; } }
mapper-(AccountMapper)
package com.bboy.mapper; import org.apache.ibatis.annotations.Param; public interface AccountMapper { //- 轉(zhuǎn)出 public int updateId1(@Param("id") int id, @Param("money") int money); //- 轉(zhuǎn)入 public int updateId2(@Param("id") int id,@Param("money") int money); }
pojo-(Account)
package com.bboy.pojo; import lombok.Data; @Data /** * @類描述: * @作者:秦帥 * @時間:2023/11/24 0024 10:45:51 */ public class Account { private int id ; private String name ; private int money ; }
demo
package com.bboy.demo; import com.bboy.service.AccountService; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * @類描述: * @作者:秦帥 * @時間:2023/11/24 0024 10:43:19 */ public class Demo { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); AccountService accountService = (AccountService) context.getBean("accountService"); accountService.pay(1,2,10000); } }
到此這篇關(guān)于Spring整合mybatis--Spring中的事務管理(xml形式)的文章就介紹到這了,更多相關(guān)Spring整合mybatis--Spring事務管理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java,JSP,Servlet獲取當前工程路徑(絕對路徑)問題解析
這篇文章主要介紹了Java,JSP,Servlet獲取當前工程路徑(絕對路徑)問題解析,需要的朋友可以參考下。2017-09-09java組件commons-fileupload實現(xiàn)文件上傳、下載、在線打開
這篇文章主要介紹了java組件commons-fileupload實現(xiàn)文件上傳、下載、在線打開,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-10-10MyBatis-Plus中SimpleQuery查詢實現(xiàn)
本文主要介紹了MyBatis-Plus中SimpleQuery查詢實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-08-08