当前位置:首页 > 后端开发 > SpringBoot Mybatis开启事务

SpringBoot Mybatis开启事务

7个月前 (05-22)62

SpringBoot开启事务非常的简单,只需要一个注解@Transactional 就可以,因为默认已经对jpa、mybatis、jdbc开启了事务。

上一篇讲解了SpringBoot整合Mybatis,就在上篇的基础上做讲解。

(1)准备

有一个wzj数据库,teacher数据库表,表里面有一行数据。

SpringBoot Mybatis开启事务 _ Java侠

(2)定义数据访问接口

该接口通过tec_id来更新tec_age。

    /**
     * 修改信息
     * @param id id
     * @param age 修改的年龄          
     */
    void modifyAge(@Param("id") String id,@Param("age")Integer age);

mapper如下

<?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.wzj.demo.mapper.TeacherMapper">
    <resultMap id="BaseResultMap" type="com.wzj.demo.entity.TeacherBean">
        <result column="tec_id" property="tecId" jdbcType="VARCHAR"/>
        <result column="tec_name" property="tecName" jdbcType="VARCHAR"/>
        <result column="tec_age" property="tecAge" jdbcType="INTEGER"/>
    </resultMap>

    <sql id="Base_Column_List">
        tec_id, tec_name, tec_age
    </sql>
    

    <update id="modifyAge">
        UPDATE
         teacher
        set
          tec_age = #{age}
        WHERE
          tec_id = #{id}
    </update>
</mapper>

(3)Service层

/**
 * 修改年龄,将id为1001的老师信息修改为22岁,再修改为30
 */
@Transactional
public void modifyAge()
{
    teacherMapper.modifyAge("1001",22);

    int i = 4 / 0;

    teacherMapper.modifyAge("1001",30);
}

(4)测试

发现程序抛出异常,数据库的信息id为1001的老师的age还是20。

是由于@Transactional声明事务,虽然第一次成功修改年龄为22,但是4/0抛出了异常,数据又回滚到原来20,。

Github源码下载https://github.com/HelloKittyNII/SpringBoot/tree/master/SpringBootDemo


作者:dmfrm
来源链接:https://blog.csdn.net/u010889616/article/details/79661732

标签: Spring Boot

“SpringBoot Mybatis开启事务” 的相关文章

eclipse打包springboot项目

eclipse打包springboot项目 右键项目run as中的maven build 输入clean package...

springboot 配置404页面

Thymeleaf模板自定义静态error页面方法 在resource/templates/error下添加error.html页面(error替换成对应的错误码,40...

SpringBoot操作ES进行各种高级查询

SpringBoot操作ES进行各种高级查询

使用SpringBoot搭建项目,对ES进行查询操作,包含:查询全部、分页查询、精确匹配、多字段查询、布尔查询、过滤查询、排序和高亮显示 SpringBoot整合ES...

springboot毕业设计题目课题参考

(01)java语言springboot框架的新闻信息管理系统  https://ke.qq.com/course/3488342 (02)java语言spring...

实战SpringBoot集成JWT实现token验证

实战SpringBoot集成JWT实现token验证

本文为转载,详情见文末 JWT官网:https://jwt.io/ JWT(Java版)的github地址:https://github.com/jwtk...

Spring Boot的@SpringBootApplication无法引入的问题

Spring Boot的@SpringBootApplication无法引入的问题

转自:https://blog.csdn.net/cckevincyh/article/details/78962002 今天搭建了springb...

Springboot的static和templates

Springboot的static和templates

static和templates部分参考博客:https://blog.csdn.net/wangb_java/article/details/71775637 热部署参考博客:h...

springboot实现多文件上传

springboot实现多文件上传

一说明 spingMVC支持文件上传,我们通过Apach 的 commons-fileupload 包的CommonsMultipartResolver 去实现了 spingMVC...

六祎-来自:Kubernetes系列、 Docker系列、SpringCloud系列、SpringBoot系列、Spring系列、 Java系列等

 Kubernetes系列 使用Kubespray部署Kubernetes集群 Kubernetes对象模型 Kuberne...

idea 搭建 SpringBoot  集成 mybatis

idea 搭建 SpringBoot 集成 mybatis

      编译器:IDEA2018.2.3 环境:win10,jdk1.8,maven3.4 数据库:mysql 5.7...