springboot之事务管理mybatis

之前一直在xml项目配置事务,迁移到springboot,使用事务,清爽了好多。废话不多说,直接贴代码。

第一步:在service层,类或者方法上加上@Transactional

    @Transactional(propagation = Propagation.REQUIRED,readOnly=true) //属性可以为空
    public void updateUser(User user){
        userMapper.updateUser(user);
//        int a = 3/0;
    }

第二步:启动类上添加@EnableTransactionManagement,开启申明式注解

@SpringBootApplication
@MapperScan("com.pian.dao")
@EnableTransactionManagement
//@EnableScheduling
public class App
{
    public static void main( String[] args )
    {
        System.out.println( "Hello World!" );
        SpringApplication.run(App.class,args);

    }
}

第三步:贴上mapper.xml,此处有个注意的地方,如果参数为空,则必须添写jdbcType=XXX类型,否则mybatis无法转换。

    <update id="updateUser" parameterType="com.pian.dto.User">
        update tb_user set
        userid = #{userid},
        user_name = #{userName},
        pwd = #{pwd,jdbcType=VARCHAR},
        age = #{age,jdbcType=INTEGER},
        sex = #{sex},
        birthday = #{birthday,jdbcType=DATE}
        where userid = #{userid}
    </update>

第四步:贴上测试代码,模拟测试只要打开3/0,模拟抛出异常,查看是否更新到数据库就ok了。

    @Test
    public void testUpdateUser(){
        User user = new User();
        user.setUserid(2);
        user.setUserName("老虎");
        user.setSex("女");
        userService.updateUser(user);

    }

完美!!!

发布了62 篇原创文章 · 获赞 5 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/yingcly003/article/details/104231999