使用

application.yml配置文件

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/lessonplus?useUnicode=true&characterEncoding=UTF-8
    username: root
    password: xxxx

创建实体类

package cn.reviewsystem.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.util.Date;

@Data
public class Student {
    private String studentNumber;
    private String name;
    private String sex;
    private String phone;
    private String email;
    private String password;
    private Date birthday;
    private String slogan;
    private String createTime;
    private int roleId;
}

创建一个接口继承BaseMapper

package cn.reviewsystem.repository;

import cn.reviewsystem.entity.Student;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;

@Repository
public interface StudentRepository extends BaseMapper<Student> {
}

测试

package cn.reviewsystem.repository;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

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

@SpringBootTest
class StudentRepositoryTest {

    @Autowired
    private StudentRepository studentRepository;

    @Test
    void findAll(){
        studentRepository.selectList(null).forEach(System.out::println);
    }

}

常用注解

@TableName 映射数据库的表名

package cn.reviewsystem.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.util.Date;

@Data
@TableName(value = "tb_student")
public class Student {
    private String studentNumber;
    private String name;
    private String sex;
    private String phone;
    private String email;
    private String password;
    private Date birthday;
    private String slogan;
    private String createTime;
    private int roleId;
}

TableId 设置主键映射

描述

AUTO

数据库自增

NONE

MybatisPlus set主键,雪花算法实现

INPUT

需要开发者手动赋值

ASSIGN_ID

MybatisPlus分破ID,Long,Integer,String

ASSIGN_UUID

分配UUID,String

INPUT 如果开发者没有手动赋值,则数据库通过自增的方式给主键赋值,如果开发者手动赋值,则存入该值。

AUTO默认就是数据库自增,开发者无需赋值。

ASSIGN_ID MybatisPlus自动赋值,雪花算法

ASSIGN_UUID 主键的数据类型必须是String,自动生成UUID进行赋值

TableField 映射非主键字段

  • value映射字段名

  • exist表示是否为数据库字段 true或false

  • select表示是否查询该字段

  • fill表示是否自动填充该字段,使用时需要创建自动填充处理器

package cn.reviewsystem.handler;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;

import java.util.Date;

//Mybatis Plus自动填充处理器
//如果该字段加上@TableField(fill = FieldFill.INSERT) 会自动调用insertFill方法
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        this.setFieldValByName("createTime",new Date(),metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {

    }
}
  • Version 标记乐观锁,通过version字段来保证数据的安全性,当修改数据的时候,会以version作为条件,当条件成立的时候回修改成功。

  • @EnumValue 通用枚举类注解,将数据库字段映射成实体类的枚举类型成员变量

package cn.reviewsystem.enums;


import com.baomidou.mybatisplus.annotation.EnumValue;

public enum StatusEnum {
    ON(1,"开启"),
    OFF(0,"未开启");

    StatusEnum(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    @EnumValue
    private Integer code;
    private String message;
}

配置文件application.yml

# 枚举包扫描 type-enums-package: cn.reviewsystem.enums

TableLogic 映射逻辑删除

  • 1、数据表添加deleted字段

  • 2、实体类添加注解

  • 3、application.yml配置

global-config: db-config: logic-not-delete-value: 0 logic-delete-value: 1

Mybatis Plus代码生成器

导入相关依赖

<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-generator -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.4.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.velocity/velocity -->
<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity</artifactId>
    <version>1.7</version>
</dependency>

启动类

package cn.reviewsystem;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

public class Main {
    public static void main(String[] args) {
//        创建Generator对象
        AutoGenerator autoGenerator = new AutoGenerator();
        // 数据源
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
            // 设置数据库类型
        dataSourceConfig.setDbType(DbType.MYSQL);
            // 设置数据库连接
        dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/lessonplus?useUnicode=true&characterEncoding=UTF-8");
            // 设置用户名
        dataSourceConfig.setUsername("root");
            // 设置密码
        dataSourceConfig.setPassword("xxxxxxx");
            // 设置驱动
        dataSourceConfig.setDriverName("com.mysql.jdbc.Driver");
            // 将数据源装入Generator对象
        autoGenerator.setDataSource(dataSourceConfig);
        // 全局配置
        GlobalConfig globalConfig = new GlobalConfig();
            // 设置生成的代码在哪个路径
        globalConfig.setOutputDir(System.getProperty("user.dir") + "/src/main/java");
            // 设置是否自动打开文件夹
        globalConfig.setOpen(false);
            // 设置作者
//        globalConfig.setAuthor();
            //设置生成service包的名称
        globalConfig.setServiceName("%sService");

        autoGenerator.setGlobalConfig(globalConfig);
        //包信息
        PackageConfig packageConfig = new PackageConfig();
            //设置副包存放地点
        packageConfig.setParent("cn.reviewsystem");
            //设置是否创建新的包存放
        packageConfig.setModuleName("generator");
        packageConfig.setController("controller");
        packageConfig.setService("service");
        packageConfig.setServiceImpl("service.impl");
        packageConfig.setMapper("mapper");
        packageConfig.setEntity("entity");
        autoGenerator.setPackageInfo(packageConfig);
        // 配置信息
        StrategyConfig strategyConfig = new StrategyConfig();
            //是否使用lombok注解
        strategyConfig.setEntityLombokModel(true);
            //使用驼峰式命名法
        strategyConfig.setNaming(NamingStrategy.underline_to_camel);
        strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
        autoGenerator.setStrategy(strategyConfig);

        // 运行
        autoGenerator.execute();
    }
}