使用SpringBoot注解方式处理事务回滚实现

网友投稿 359 2022-11-27


使用SpringBoot注解方式处理事务回滚实现

我们在SpringBoot和MyBatis整合的时候,需要在SpringBoot中通过注解方式配置事务回滚

1 Pojo类

package com.zxf.domain;

import java.util.Date;

public class User {

private Integer id;

private String name;

private String pwd;

private String head_img;

private String phone;

private Date create_time;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

http:// this.name = name;

}

public String getPwd() {

return pwd;

}

public void setPwd(String pwd) {

this.pwd = pwd;

}

public String getHead_img() {

return head_img;

}

public void setHead_img(String head_img) {

this.head_img = head_img;

}

public String getPhone() {

return phone;

}

public void setPhone(String phone) {

this.phone = phone;

}

public Date getCreate_time() {

return create_time;

}

public void setChttp://reate_time(Date create_time) {

this.create_time = create_time;

}

}

2 Mapper接口

我们这里使用注解的方式编写SQL语句

package com.zxf.mapper;

import com.zxf.domain.User;

import org.apache.ibatis.annotations.Insert;

import org.springframework.stereotype.Repository;

@Repository

public interface UserMapper {

@Insert("insert into user (name,pwd,head_img,phone,create_time) values(#{name},#{pwd},#{head_img},#{phone},#{create_time})")

public int save(User user);

}

3 Service接口和实现类

package com.zxf.service;

import com.zxf.domain.User;

public interface UserService {

public int save(User user);

}

package com.zxf.service.impl;

import com.zxf.domain.User;

import com.zxf.mapper.UserMapper;

import com.zxf.service.UserService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

import org.springframework.transaction.annotation.Transactional;

@Service

@Transactional //实现事务的时候要在业务类中加入该注解

public class UserServiceImpl implements UserService {

@Autowired

private UserMapper userMapper;

@Override

public int save(User user) {

int f= userMapper.save(user);

// int x=5/0;

return f;

}

}

4 Controller层

package com.zxf.controller;

import com.zxf.domain.User;

import com.zxf.service.UserService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import java.util.Date;

@RestController

@RequestMapping("api/v1/user")

public class UserController {

@Autowired

private UserService userService;

@RequestMapping("save")

public Object save(){

User user=new User();

user.setName("zhang3");

user.setPwd("abc123");

user.setCreate_time(new Date());

user.setPhone("1789238734");

user.setHead_img("aabbddd.jpg");

userService.save(user);

return user;

}

}

5 application.properits 配置文件

spring.datasource.driver-class-name =com.mysql.jdbc.Driver

spring.datasource.url=jdbc:mysql://localhost:3306/online

spring.datasource.username=root

spring.datasource.password=******

mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

6 pom文件

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.3.2.RELEASE

com.zxf

xf_spring2

0.0.1-SNAPSHOT

xf_spring2

1.8

org.springframework.boot

spring-boot-starter-web

org.mybatis.spring.boot

mybatis-spring-boot-starter

2.1.2

mysql

mysql-connector-java

5.1.13

org.springframework.boot

spring-boot-starter-test

test

org.junit.vintage

junit-vintage-engine

org.springframework.boot

spring-boot-maven-plugin

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.3.2.RELEASE

com.zxf

xf_spring2

0.0.1-SNAPSHOT

xf_spring2

1.8

org.springframework.boot

spring-boot-starter-web

org.mybatis.spring.boot

mybatis-spring-boot-starter

2.1.2

mysql

mysql-connector-java

5.1.13

org.springframework.boot

spring-boot-starter-test

test

org.junit.vintage

junit-vintage-engine

org.springframework.boot

spring-boot-maven-plugin

6 SpringBoot启动类

package com.zxf;

import org.mybatis.spring.annotation.MapperScan;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.transaction.annotation.EnableTransactionManagement;

@SpringBootApplication

@MapperScan("com.zxf.mapper")//扫描mapper接口

@EnableTransactionManagement//事务处理的时候启动类必须要加的注解

public class XfSpring2Application {

public static void main(String[] args) {

SpringApplication.run(XfSpring2Application.class, args);

}

}

7 也是最重要,也是很多人忽视的地方,就是MySQL要支持事务处理才可以

这里一定要记住;否则你的SpringBoot的事务没有任何效果


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:基于Springboot2.3访问本地路径下静态资源的方法(解决报错:Not allowed to load local resource)
下一篇:如何利用IDEA搭建SpringBoot项目整合mybatis实现简单的登录功能
相关文章

 发表评论

暂时没有评论,来抢沙发吧~