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

相关文章
|
10月前
|
XML Java 数据库连接
二、搭建MyBatis采用xml方式,验证CRUD(增删改查操作)
二、搭建MyBatis采用xml方式,验证CRUD(增删改查操作)
345 21
|
10月前
|
人工智能 Java 数据库连接
MyBatis Plus 使用 Service 接口进行增删改查
本文介绍了基于 MyBatis-Plus 的数据库操作流程,包括配置、实体类、Service 层及 Mapper 层的创建。通过在 `application.yml` 中配置 SQL 日志打印,确保调试便利。示例中新建了 `UserTableEntity` 实体类映射 `sys_user` 表,并构建了 `UserService` 和 `UserServiceImpl` 处理业务逻辑,同时定义了 `UserTableMapper` 进行数据交互。测试部分展示了查询、插入、删除和更新的操作方法及输出结果,帮助开发者快速上手 MyBatis-Plus 数据持久化框架。
769 0
mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
文章介绍了MyBatis的简单增删改查操作,包括创建数据表、实体类、配置文件、Mapper接口及其XML文件,并解释了`#{}`预编译参数和`@Param`注解的使用。同时,还涵盖了resultType与resultMap的区别,并提供了完整的代码实例和测试用例。
mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
|
SQL Java 数据库
2、Mybatis-Plus 测试增、删、改、查
这篇文章是关于使用Mybatis-Plus进行数据库的增删改查操作的本地测试,包括创建数据库表、添加数据、创建使用lombok的实体类、添加mapper接口以及编写测试代码进行基本的数据库操作验证。
2、Mybatis-Plus 测试增、删、改、查
|
SQL XML Java
mybatis :sqlmapconfig.xml配置 ++++Mapper XML 文件(sql/insert/delete/update/select)(增删改查)用法
当然,这些仅是MyBatis功能的初步介绍。MyBatis还提供了高级特性,如动态SQL、类型处理器、插件等,可以进一步提供对数据库交互的强大支持和灵活性。希望上述内容对您理解MyBatis的基本操作有所帮助。在实际使用中,您可能还需要根据具体的业务要求调整和优化SQL语句和配置。
280 1
|
Java 数据库连接 数据库
mybatis plus 中增删改查及Wrapper的使用
mybatis plus 中增删改查及Wrapper的使用
774 3
|
druid Java 数据库连接
SpringBoot项目整合MybatisPlus持久层框架+Druid数据库连接池,以及实现增删改查功能
SpringBoot项目整合MybatisPlus和Druid数据库连接池,实现基本的增删改查功能。
1646 0
|
SQL 缓存 Java
使用MyBatis优化Java持久层操作
使用MyBatis优化Java持久层操作
|
7月前
|
Java 数据库连接 数据库
Spring boot 使用mybatis generator 自动生成代码插件
本文介绍了在Spring Boot项目中使用MyBatis Generator插件自动生成代码的详细步骤。首先创建一个新的Spring Boot项目,接着引入MyBatis Generator插件并配置`pom.xml`文件。然后删除默认的`application.properties`文件,创建`application.yml`进行相关配置,如设置Mapper路径和实体类包名。重点在于配置`generatorConfig.xml`文件,包括数据库驱动、连接信息、生成模型、映射文件及DAO的包名和位置。最后通过IDE配置运行插件生成代码,并在主类添加`@MapperScan`注解完成整合
1303 1
Spring boot 使用mybatis generator 自动生成代码插件
|
10月前
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于注解的整合
本文介绍了Spring Boot集成MyBatis的两种方式:基于XML和注解的形式。重点讲解了注解方式,包括@Select、@Insert、@Update、@Delete等常用注解的使用方法,以及多参数时@Param注解的应用。同时,针对字段映射不一致的问题,提供了@Results和@ResultMap的解决方案。文章还提到实际项目中常结合XML与注解的优点,灵活使用两者以提高开发效率,并附带课程源码供下载学习。
822 0