MybatisPlus学习笔记1

74 阅读3分钟

“开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 1 天,点击查看活动详情

一、MybatisPlus简介

1.介绍:

Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。其特性有无侵入、损耗小、强大的 CRUD 操作、支持 Lambda 形式调用、支持主键自动生成、支持 ActiveRecord 模式、支持自定义全局通用操作、内置代码生成器、内置分页插件、分页插件支持多种数据库、内置性能分析插件、内置全局拦截插件等。

MyBatisPlus的官网为:https://mp.baomidou.com/

huaix捐赠了域名https://mybatis.plus

2.框架结构

image.png

二、入门

1.入门案例:

使用环境:IntelliJ IDEA、MySQL、Navicat。

(1)创建数据库及表:

  • 创建mybatisplus_db数据库:字符集选择为utd-8。

image.png

  • 创建user表:包含id、name、sex、password、age字段,在表中任意加些数据即可。

image.png

(2)创建SpringBoot工程:

  • 创建一个新的模块,选择Spring Initializr快速初始化一个Spring Boot工程。

image.png

  • 点击下一步,将Artifact更改,Type选择maven,Java版本选择自己装配的,最后将包名删减为自己想要的。创建完后项目包下会有很多文件,我将用不到的删除了。

image.png

(3)添加依赖包:在创建项目时勾选所需依赖,因为是测试功能,所以只勾选了Mysql。

image.png

(4)配置pom.xml文件:打开pom.xml文件,添加各种依赖,大部分依赖由idea引入了,我们只需要添加mybatis-plus-boot-starter和Druid数据库连接池的依赖。

<dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>最新版本</version>
    </dependency>

(5)添加MybatisPlus的相关配置信息:在resources包下的application.xml文件中配置数据库信息。

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatisplus_db?serverTimezone=UTC
    username: root
    password: 123

(6)根据数据库表创建实体类:实体类要和数据库表名一样。

public class User {

    private int id;
    private String name;
    private String sex;
    private String password;
    private int age;
    
    ......  //此处省略了get和set方法,ToString方法
}

(7)创建Dao接口:对比Mybatis,MybatisPlus在Dao文件中不用写方法,只需要继承BaseMapper。

package com.example.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.domain.User;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserDao extends BaseMapper<User> {
}

此时,MybatisPlus已经可以使用了。

(8)编写测试类: 在test文件夹,同名包下编写测试类。

package com.example;

import com.example.dao.UserDao;
import com.example.domain.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

@SpringBootTest
class UserTest {

    @Autowired
    private UserDao userDao;

    @Test
    void text1() {
        List<User> userList = userDao.selectList(null);
        System.out.println(userList);
    }

}

(9)报错: image.png

(10)解决:

有这个错误的原因之一为测试文件为SpringBoot自动生成,需要重新创建;原因之二为我重新创建测试文件后命名为Test.java,在这个文件中@Test变为了@org.junit.Test。

解决这个问题后产生了Class not found: "com.example.UserTest"这个新问题,看了一下我的包,我以为是因为少了一层,所以我增加了一个test包,结果还是找不到,我又删除了这个包。

我在maven中clean后install,出现# Error:(3, 32) java: 无法访问org.springframework.boot.SpringApplication,在pom.xml文件中更改 spring-boot-starter-parent的版本,从3.0.5改为2.7.5。

然后出现问题:

image.png

原因为@Test引入的包为org.junit.Test,我们应该引用org.junit.jupiter.api.Test

(11)成功结果为:

image.png

image.png

三、总结

参考:博客

org.junit.Test与org.junit.jupiter.api.Test的区别:

使用org.junit.Test需要加public,而且会报空指针异常;使用org.junit.jupiter.api.Test,不需要加public。

org.junit.Test:

测试注释告诉JUnit,它所附加的公共void方法可以作为测试用例运行。 要运行该方法,JUnit首先构造一个新的类实例,然后调用带注释的方法。 测试引发的任何异常都将被JUnit报告为失败。 如果没有抛出异常,则假定测试成功。

如果使用这种方法,需要在类前加@RunWith注解。

org.junit.jupiter.api.Test:

测试方法是任何直接注释或用@Test、@RepeatedTest、@ParameterizedTest、@TestFactory或@TestTemplate进行元注释的实例方法。

可以直接使用。

在Spring Boot 2.2.x以后使用import org.junit.jupiter.api.Test—— Junit5。
在Spring Boot 2.2.x之前使用import org.junit.Test —— Junit4。