SpringBoot数据层测试事务回滚的实现流程
作者:执久呀 时间:2022-05-01 14:36:37
数据层测试事务回滚
pom.xml导入对应的一些坐标,mysql,Mp,等
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
dao下
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.pojo.Person;
import org.apache.ibatis.annotations.Mapper;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;
@Mapper//使用注解配置映射
@Component//给spring管理,方便注入
public interface PersonDao extends BaseMapper<Person> {
}
pojo对象
package com.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName("tb_user")
public class Person {
private Long id;
private String username;
private String password;
private String gender;
private String addr;
}
service
package com.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.pojo.Person;
public interface PersonService extends IService<Person> {
}
serviceImpl
@Service
public class PersonServiceImpl extends ServiceImpl<PersonDao, Person> implements PersonService {
}
PersonServiceTest类下
package com.serviceTest;
import com.pojo.Person;
import com.service.PersonService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Rollback;
import org.springframework.transaction.annotation.Transactional;
@SpringBootTest
@Transactional
@Rollback(false)
public class PersonServiceTest {
@Autowired
private PersonService personService;
@Test
void testAdd(){
Person person = new Person();
person.setUsername("测试回滚2");
person.setPassword("1");
person.setGender("1");
person.setAddr("1");
System.out.println(personService.save(person));
}
}
加上@Transactional运行
加上@Transactional和@Rollback(false)运行
为了测试用例添加事务,加上@Transactional,SpringBoot会对测试用例对应的事务提交操作进行回滚,也就是springboot识别到这个是test,所以不会进行提交事务,但是会占用id。不会有数据显示。
如果想在测试用例中提交事务,可以通过@Rollback(false),不回滚,默认值是true,加上false就不会回滚,测试数据就能在数据库中显示出来。
测试用例数据设定
测试用例数据通常采用随机值进行测试,使用SpringBoot提供的随机数位器赋值
${random.int}表示随机整数
${random.int(10)}表示10以内的随机数
${random.int(10,20)}表示10到20的随机数
其中()可以是任意字符,如[ ],@@都可以。
配置文件下
personRandom:
age: ${random.int(1,100)}
name: ${random.value}
detail: ${random.uuid}
定义一个类接收
@Data
@Component//给spring管理
@ConfigurationProperties(prefix = "personrandom")
public class Person {
private String name;
private String age;
private String detail;
}
测试类下
@SpringBootTest
public class RandomTest {
@Autowired
private Person person;
@Test
public void KC(){
System.out.println(person);
}
}
运行结果
来源:https://blog.csdn.net/weixin_60719453/article/details/127423660
标签:SpringBoot,数据层,测试,事务回滚
0
投稿
猜你喜欢
利用Flutter制作经典贪吃蛇游戏
2023-07-21 07:04:13
一文带你学会规则引擎Drools的应用
2022-04-03 08:40:59
SpringBoot使用jasypt加解密密码的实现方法(二)
2021-10-15 14:16:46
深入了解Java接口回调机制
2023-11-09 15:52:05
MyBatis插入Insert、InsertSelective的区别及使用心得
2023-08-25 04:34:28
Java创建多线程的两种方式对比
2023-09-14 21:02:49
springboot集成RestTemplate及常见的用法说明
2023-02-17 20:02:27
windows定时器配置执行java jar文件的方法详解
2023-04-17 16:40:21
springboot+mybatis-plus 两种方式打印sql语句的方法
2022-12-29 13:41:11
JAVA与SQL 中的null与NULL解析
2023-06-23 11:51:18
Java毕业设计实战之平行志愿管理系统的实现
2023-09-12 14:34:23
SpringBoot上传临时文件被删除引起报错的解决
2022-05-28 23:46:24
详解Java实现简单SPI流程
2022-12-11 16:02:23
mybatis如何实现saveOrUpdate
2021-07-18 10:33:11
简单谈谈Struts动态表单(DynamicForm)
2022-10-07 07:24:29
Java在web页面上的编码解码处理及中文URL乱码解决
2023-08-25 11:10:19
SpringBoot基于Sentinel在服务上实现接口限流
2023-11-27 17:19:25
Spring MVC 学习 之 - URL参数传递详解
2022-03-04 22:05:12
C#用户定义类型转换详解
2022-06-07 11:44:32
Java BIO,NIO,AIO总结
2022-02-07 01:48:28