Mybatis 的操作(要结合上个博客一起)续集

Mybatis 是一款优秀的 持久性 框架,用于简化 JDBC 的开发

持久层 :  指的就是持久化操作的层,通常指数据访问层(dao),是用来操作数据库的 

简单来说 Mybatis 是更简单完成程序和数据库交互的框架

Mybatis 的写法有两种 :

1.xml

2.注解

这两者各有利弊,后面进行总结

Mybatis 要如何去使用呢?

1.引入 Mybatis 依赖,还有对应数据库的依赖,比如 Mysql

2.配置数据库相关信息

3.定义 java 对象

4.写实现

实现的代码的解析(上一篇博客里的代码)

Mybatis 的操作(要结合上个博客一起)续集_第1张图片

 接下来我们学习单元测试的写法

在需要写单元测试的类中,也就是UserInfoMapper 这个类里面右键选择 generate 然后选择 test

Mybatis 的操作(要结合上个博客一起)续集_第2张图片Mybatis 的操作(要结合上个博客一起)续集_第3张图片

然后把下面三个勾选上再点击OK,@Before 和@After 也可以不选,这两个的意思就是测试方法运行前执行和测试方法运行后执行,在这里我们也一起看看这两个注解

 Mybatis 的操作(要结合上个博客一起)续集_第4张图片

这样就生成了测试方法

package com.example.mybatisdemo.mapper;

import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

class UserInfoMapperTest {

    @BeforeEach
    void setUp() {
    }

    @AfterEach
    void tearDown() {
    }

    @Test
    void selectAll() {
    }
}

我们用日志的方法对其进行测试

package com.example.mybatisdemo.mapper;

import com.example.mybatisdemo.model.UserInfo;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;

import static org.junit.jupiter.api.Assertions.*;

@Slf4j
@SpringBootTest//---------启动Spring 容器
class UserInfoMapperTest {
    @Autowired
    private UserInfoMapper userInfoMapper;
    @BeforeEach//----------在每个测试方法之前执行
    void setUp() {
        log.info("setup");
    }

    @AfterEach//----------在每个测试方法之后执行
    void tearDown() {
        log.info("After");
    }

    @Test//-----------测试方法
    void selectAll() {
        List list = userInfoMapper.selectAll();
        log.info(list.toString());
    }
}

打印的日志如下 :  

Mybatis 的操作(要结合上个博客一起)续集_第5张图片

 第四行就是select  * 的内容,太长了没截完Mybatis 的操作(要结合上个博客一起)续集_第6张图片

Mybatis 常见的错误 : 

1.

Mybatis 的操作(要结合上个博客一起)续集_第7张图片

2.

Mybatis 的操作(要结合上个博客一起)续集_第8张图片

3. 

Mybatis 的操作(要结合上个博客一起)续集_第9张图片

4. 

Mybatis 的操作(要结合上个博客一起)续集_第10张图片

5. 

Mybatis 的操作(要结合上个博客一起)续集_第11张图片

如果我们想要打印 Mybatis 相关日志,我们也可以在application.xml进行配置

mybatis:
 configuration: # 配置打印 MyBatis⽇志
   log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

再次运行代码

 这样我们就能看到完整的工作流程,方便我们进行调试和找错Mybatis 的操作(要结合上个博客一起)续集_第12张图片

条件查询

package com.example.mybatisdemo.mapper;

import com.example.mybatisdemo.model.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface UserInfoMapper {
    @Select("select * from userInfo")
    List selectAll();

    @Select("select * from userInfo where id = #{id}")
    UserInfo selectOne(Integer id);

}

然后一样的右键选择generate 然后test,再进行勾选

package com.example.mybatisdemo.mapper;

import com.example.mybatisdemo.model.UserInfo;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

import static org.junit.jupiter.api.Assertions.*;

@Slf4j
@SpringBootTest
class UserInfoMapperTest {
    @Autowired
    private UserInfoMapper userInfoMapper;
    @Test
    void selectAll() {
        List list = userInfoMapper.selectAll();
        log.info(list.toString());
    }

    @Test
    void selectOne() {
        log.info(userInfoMapper.selectOne(1).toString());
    }
}

Mybatis 的操作(要结合上个博客一起)续集_第13张图片

这里有个小提醒 : 开发规范中,使用 Mybatis 对数据库进行操作的操作类,也叫XXXXMapper

比如 : 

 Mybatis 的操作(要结合上个博客一起)续集_第14张图片

Mybatis 的操作(要结合上个博客一起)续集_第15张图片

 删除分为逻辑删除和物理删除 :

逻辑删除 : 比如一个数据中有一个变量为是否删除,想要删除就把这个变量设为0,没删除就设为1

物理删除 : 从硬盘中删除了,也就是delete 

企业中比较推荐逻辑删除,因为物理删除很难挽回,删错了就麻烦了

你可能感兴趣的:(mybatis,java,开发语言)