Spring事务

Spring事务,第1张

事务要么全成功要么全失败,不存在其中某一条的成功或失败 官方文档配置
    
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <constructor-arg ref="dataSource" />
    bean>
    
    
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        
        
        <tx:attributes>
            <tx:method name="*" propagation="REQUIRED"/>
        tx:attributes>
    tx:advice>
    
    <aop:config >
        <aop:pointcut id="txPointCut" expression="execution(* com.peng.mapper.*.*(..))"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"/>
    aop:config>
实例 需要事务的类
public List<User> selectUser() {
    UserMapper mapper = getSqlSession().getMapper(UserMapper.class);
    mapper.addUser(new User(9,"磊仔","1234"));
    mapper.deleteUSer(1);
    return mapper.selectUser();
}
Mapper.xml写的sql如果出错需要按事务处理
<mapper namespace="com.peng.mapper.UserMapper">
    <select id="selectUser" resultType="user">
        select *from mybatis.user
    select>
    <insert id="addUser" parameterType="user" >
        insert into mybatis.user(id, name, pwd) value (#{id},#{name},#{pwd})
    insert>
    <delete id="deleteUSer" parameterType="int" >
        delete from mybatis.user where id=#{id}
    delete>
    <update id="updateUser" parameterType="user" >
        update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id}
    update>
mapper>
spring-mybatis.xml配置事务切入

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
         http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd
">
    
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306?mybatis&serverTimezone=UTC&characterEncoding=utf8&useUnicode=true"/>
        <property name="username" value="root"/>
        <property name="password" value="1234"/>
    bean>
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
        
        <property name="mapperLocations" value="classpath:com/peng/mapper/*.xml"/>
    bean>
    
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
        
        <constructor-arg index="0" ref="sqlSessionFactory"/>
    bean>
    
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <constructor-arg ref="dataSource" />
    bean>
    
    
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        
        
        <tx:attributes>
            <tx:method name="*" propagation="REQUIRED"/>
        tx:attributes>
    tx:advice>
    
    <aop:config >
        <aop:pointcut id="txPointCut" expression="execution(* com.peng.mapper.*.*(..))"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"/>
    aop:config>

beans>
测试
public class MyTest {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserMapper userMapper = context.getBean("userMapper2", UserMapper.class);
        List<User> users = userMapper.selectUser();
        for (User user : users) {
            System.out.println(user);
        }

    }
}

sql如果正确就会正常,如果sql其中一项失败则全部失败

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/923491.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存