MyBatis【MyBatis的增删改查操作与单元测试】(上)

简介: MyBatis【MyBatis的增删改查操作与单元测试】(上)

🍎一.单元测试


🍒1.1 什么是单元测试?


单元测试(unit testing),是指对软件中的最⼩可测试单元进⾏检查和验证的过程就叫单元测试

单元测试是开发者编写的⼀⼩段代码,⽤于检验被测代码的⼀个很⼩的、很明确的(代码)功能是否正确。执⾏单元测试就是为了证明某段代码的执⾏结果是否符合我们的预期。如果测试结果符合我们的预期,称之为测试通过,否则就是测试未通过(或者叫测试失败)


🍒1.2 单元测试好处


  1. 可以⾮常简单、直观、快速的测试某⼀个功能是否正确(可以搭配日志打印)
  2. 使⽤单元测试可以帮我们在打包的时候,发现⼀些问题,因为在打包之前,所以的单元测试必须通过,否则不能打包成功(不用手动测试)
  3. 使⽤单元测试,在测试功能的时候,可以不污染连接的数据库,也就是在不对数据库进⾏任何改变的情况下,测试功能(有事务回滚机制)


🍒1.3 Spring Boot 框架 单元测试使用


Spring Boot 项⽬创建时会默认单元测试框架 spring-boot-test,⽽这个单元测试框架主要是依靠另⼀个著名的测试框架 JUnit 实现的,打开 pom.xml 就可以看到,以下信息是 Spring Boot 项⽬创建是⾃动添加的:


<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-test</artifactId>
 <scope>test</scope>
</dependency>

如果pom.xml文件内没有我们可以手动添加


🍒1.4 单元测试实现


在我们创建的XXXMapper接口中


b21748bf7bfa45ac918b054301a1e5f6.png


bab951f5114640689835fdb7bae70d19.png


53f9b75df5c14321a2f44efdbdf18e2d.png

@Slf4j注解 打印日志

@Resource注解进行UserMapper属性注入


25af9c6aaa464159a901bb91c7fa0c42.png


4f06f4fbb9954004b1637046b1da5491.png

🍒1.5 断言

import com.example.demo.model.User;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
@SpringBootTest
class UserControllerTest {
    @Resource
    private UserController userController;
    @Test
    void save() {
       User user = new User();
       user.setId(1);
       user.setName("Java Test");
       user.setPassword("123");
       boolean result = userController.save(user);
       // 使⽤断⾔判断最终的结果是否符合预期
       Assertions.assertEquals(true, result);
       // Assertions.assertTrue(result);
    }
}

image.png


🍎二.MyBatis修改操作


UserMapper接口修改用户信息方法:


ae8b9c8c5a4e409f895e987c65d54916.png


UserMapper.xml 进行SQL修改用户信息语句传输:


1b472fc8019446d1932eeda2520f3af3.png

单元测试:

5955a96a0b304235ae43287b7ab95fed.png


单元测试结果:


df37921450d443a88a82f2a467911f89.png


🍎三.MyBatis删除操作


UserMapper接口删除用户信息方法:


// 删除方法{根据id删除这一条数据}
    public int del(@Param("id") Integer id);


UserMapper.xml 进行SQL删除用户信息语句传输:


<!-- 根据用户id删除用户 -->
    <delete id="del">
         delete from userinfo where id=#{id}
    </delete>

单元测试:


@Test
    @Transactional
    void del() {
        int result = userMapper.del(2);
        System.out.println(result);
    }


单元测试解结果:

07f1119b8b214d259db945c1a4d139cf.png

🍎四.MyBatis增加操作


🍒4.1 MyBatis增加操作


UserMapper接口增加用户信息方法:


// 添加方法
    public int add(UserInfo userInfo);


UserMapper.xml 进行SQL增加用户信息语句传输:

 <!-- 添加用户,返回受影响的行数 -->
    <insert id="add">
        insert into userinfo(username,password,photo)
        values(#{username},#{password},#{photo})
    </insert>

单元测试:'

 @Test
    void add() {
        UserInfo userInfo = new UserInfo();
        userInfo.setUsername("王五");
        userInfo.setPassword("123");
        userInfo.setPhoto("default.png");
        int result = userMapper.add(userInfo);
        System.out.println(result);
    }

单元测试解结果:'

ab101b6ef2544ed1a4e3b8cdd7cc000e.png

🍒4.2 MyBatis增加操作(返回自增id)


默认情况下返回的是受影响的⾏号,如果想要返回⾃增 id,具体实现如下


UserMapper接口增加用户信息方法:'


 // 添加方法
    // 添加用户返回受影响的行数
    public int addGetId(UserInfo userInfo);

UserMapper.xml 进行SQL增加用户信息语句传输:

●useGeneratedKeys:这会令 MyBatis 使⽤ JDBC 的 getGeneratedKeys ⽅法来取出由数据库内部⽣成的主键
(⽐如:像 MySQL 和 SQL Server 这样的关系型数据库管理系统的⾃动递增字段),默认值:false
●keyProperty:指定能够唯⼀识别对象的属性,MyBatis 会使⽤ getGeneratedKeys 的返回值或 insert 语句的 selectKey ⼦元素设置它的值,
默认值:未设置(unset)。如果⽣成列不⽌⼀个,可以⽤逗号分隔多个属性名称
<!-- 添加用户,返回受影响的行数和自增id -->
    <insert id="addGetId" useGeneratedKeys="true" keyProperty="id">
        insert into userinfo(username,password,photo)
        values(#{username},#{password},#{photo})
    </insert>

单元测试:

 @Test
    void addGetId() {
        UserInfo userInfo = new UserInfo();
        userInfo.setUsername("王五");
        userInfo.setPassword("123");
        userInfo.setPhoto("default.png");
        System.out.println("添加之前 user id:" + userInfo.getId());
        int result = userMapper.addGetId(userInfo);
        System.out.println("受影响的行数:" + result);
        System.out.println("添加之后 user id:" + userInfo.getId());
    }

单元测试解结果:


05d629a39a9c4c80b78633c3ca3b661e.png

相关文章
|
1月前
|
存储 Java 数据库连接
MyBatis-Plus 基础操作指南:实现高效的增删改查
MyBatis-Plus 基础操作指南:实现高效的增删改查
36 0
|
1月前
|
关系型数据库 Java 数据库连接
MyBatis-Plus简介和入门操作
【1月更文挑战第5天】 一、MyBatis-Plus简介 二、 MyBatis-Plus操作 1、准备数据库脚本 2、准备boot工程 3、导入依赖 4、配置文件和启动类 5、功能编码 6、测试和使用
94 1
|
1月前
|
SQL Java 数据库连接
初识MyBatis(搭建MyBatis、简单增删改查、核心配置文件讲解及获取参数值)
初识MyBatis(搭建MyBatis、简单增删改查、核心配置文件讲解及获取参数值)
|
1月前
|
SQL Java 数据库连接
用springboot mybatis写一个增删改查
用springboot mybatis写一个增删改查
17 0
|
25天前
|
SQL Oracle 关系型数据库
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作
74 0
|
1天前
|
XML Java 数据库连接
【JavaEE进阶】 MyBatis使用XML实现增删改查
【JavaEE进阶】 MyBatis使用XML实现增删改查
|
1天前
|
Java 关系型数据库 数据库连接
【JavaEE进阶】 MyBatis使用注解实现增删改查
【JavaEE进阶】 MyBatis使用注解实现增删改查
|
25天前
|
SQL Java 数据库连接
MyBatis的多表操作
MyBatis的多表操作
12 0
|
25天前
|
Java 数据库连接 API
MyBatis入门操作
MyBatis入门操作
7 0
|
25天前
|
Java 数据库连接 测试技术
【MyBatis】操作数据库——入门
【MyBatis】操作数据库——入门