Mybatis 的操作(结合上文)续集

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

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

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

Mybatis 的写法有两种 :

1.xml

2.注解

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

Mybatis 要如何去使用呢?

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

2.配置数据库相关信息

3.定义 java 对象

4.写实现

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

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

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

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

 

这样就生成了测试方法

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<UserInfo> list = userInfoMapper.selectAll();
        log.info(list.toString());
    }
}

打印的日志如下 :  

 第四行就是select  * 的内容,太长了没截完

Mybatis 常见的错误 : 

1.

2.

3. 

4. 

5. 

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

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

再次运行代码

 这样我们就能看到完整的工作流程,方便我们进行调试和找错

条件查询

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<UserInfo> 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<UserInfo> list = userInfoMapper.selectAll();
        log.info(list.toString());
    }

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

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

比如 : 

 

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

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

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

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

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值