SpringBoot数据层测试事务回滚的实现流程
作者:执久呀 发布时间:2022-05-01 14:36:37
标签:SpringBoot,数据层,测试,事务回滚
数据层测试事务回滚
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
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- Android设备用久了,截屏是个麻烦事。更麻烦的是通过qq传到电脑上,倒腾半天。其实用adb命令就可以截屏,然后写个pull的语句就可以拉
- 循环轮播的方法有两种,一种是使用定时器另外一种是使用手指拨动,相比较而言,定时器实现循环播放比较容易,只要在定时器的消息里加上简单几段代码即
- 最近在做项目的时候,一直用一个叫做API的东西,controller注解我会写,这个东西我也会用,但是我确实不知道这个东西是个什么,有点神奇
- /** * Gets the number of cores available in this device, across all pr
- 如果问你在日常开发中用到的最多的一个 Java 类是什么,阿粉敢打赌绝对是 String.class。说到&n
- 1.新建springBoot项目在前面有两种方式2.加入thymeleaf模板引擎SpringBoot推荐使用thymeleaf模板引擎语法
- 1、效果2、简介本文主角是ItemTouchHelper。它是RecyclerView对于item交互处理的一个「辅助类」,主要用于拖拽以及
- 上篇文章中,我们讲了在 Spring Security 中如何踢掉前一个登录用户,或者禁止用户二次登录,通过一个简单的案例,实现了我们想要的
- 一、基本概念JavaWeb里面的listener是通过观察者设计模式进行实现的。对于观察者模式,这里不做过多介绍,大概讲一下什么意思。观察者
- C语言 MD5源码md5c.h:/* POINTER defines a generic pointer type */ typedef u
- 前几天,收到 AS 发布的 3.0 更新,就迫不及待的更新了,更新后发现整个界面的画风都变了,和 IDEA 更像了本人是命令行重度使用患者,
- 1、WebView类提供的常用方法2、WebView的简单用法实现浏览网页步骤:布局文件<WebView
- 本文实例讲述了Java中的异常和处理机制。分享给大家供大家参考,具体如下:简介程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期
- 需求背景需求一:SpringMVC构建的微服务系统,数据库对日期的存储是Long类型的时间戳,前端之前是默认使用Long类型时间,现在前端框
- 1. 继承1. 子类继承了父类,获得父类的全部Field和方法。子类Student类继承父类,将可以获得父类的全部Field和方法publi
- Springboot整合RockerMQ1、maven依赖<dependencies> <!--
- jdk安装有两种方式:第一种是使用yum命令一键安装,默认安装目录在/usr/lib/jvm第二种是手动安装,须去oracle官网下载jdk
- 先给出网页地址:https://wall.alphacoders.com/featured.php?lang=Chinese主要步骤:利用J
- 前言很多朋友都想开始自己的Android开发之旅,但是遇到困难重重。从最开始接触Android开发,从搭建开发环境就花了我大部分时间。所以,
- Ribbon是Spring Cloud Netflix全家桶中负责负载均衡的组件,它是一组类库的集合。通过Ribbon,程序员能在不涉及到具