前言技术之Mybatis Plus

一、Mybatis Plus的基本使用

官网:MyBatis-Plus

1、特性

2、基本使用

1、新建springboot项目

2、在官网复制建表语句

 

sql脚本:

CREATE TABLE user
(
    id BIGINT(20) NOT NULL COMMENT '主键ID',
    name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
    age INT(11) NULL DEFAULT NULL COMMENT '年龄',
    email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
    PRIMARY KEY (id)
);

INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, '[email protected]'),
(2, 'Jack', 20, '[email protected]'),
(3, 'Tom', 28, '[email protected]'),
(4, 'Sandy', 21, '[email protected]'),
(5, 'Billie', 24, '[email protected]');

 3、导入依赖

<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>

4、配置

在 application.yml 配置文件中添加 H2 数据库的相关配置:

server:
  port: 8080
spring:
  application:
    name: plus
  datasource:
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/aaa?userSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true
logging:
  level: 
    com.example.plus.mapper: debug  

5、编写实体类

package com.lv.plus.pojo;

import lombok.Data;

@Data
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

6、新建mapper层

注意继承的是BaseMapper

package com.lv.plus.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lv.plus.pojo.User;
import org.springframework.stereotype.Repository;

@Repository
public interface UserMapper extends BaseMapper<User> {

}

7、在启动类加上注解扫描mapper

@MapperScan("com.lv.plus.mapper")

8、开始使用,添加测试类

package com.lv.plus;

import com.lv.plus.mapper.UserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class PlusApplicationTests {

    @Autowired
    private UserMapper mapper;

    @Test
    void contextLoads() {
//        System.out.println(mapper.selectById(1));
        mapper.selectList(null).forEach(System.out::println);
    }

}

二、Java8代码解析

1、代码生成器(新)

mybatis plus生成配置文件

①、导入依赖

当前包未传递依赖 MP 包,需要自己引入!

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.2</version>
</dependency>

②、新建自动生成器MysqlGenerator

package com.lv.plus.generator;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;
import lombok.extern.slf4j.Slf4j;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

@Slf4j
public class MysqlGenerator {

    /**
     * 数据源配置(修改成MySQL)
     */
    protected static String URL = "jdbc:mysql://localhost:3306/aaa?userSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true";
    protected static String USERNAME = "root";
    protected static String PASSWORD = "123456";

    protected static DataSourceConfig.Builder DATA_SOURCE_CONFIG = new DataSourceConfig.Builder(URL, USERNAME, PASSWORD);

    // 处理 all 情况
    /**
     * 交互式的生成器(all)
     * @param tables
     * @return
     */
    protected static List<String> getTables(String tables) {
        return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
    }

    public static void main(String[] args) {
        FastAutoGenerator.create(DATA_SOURCE_CONFIG)
//                全局配置
                .globalConfig((scanner,builder) ->
//                    builder就是globalConfig的构建器
                    builder.fileOverride() //覆盖已生成文件
                            .outputDir(System.getProperty("user.dir")+"\\src\\main\\java")
                            .author(scanner.apply("请输入你的用户名"))
                            .enableSwagger()
                            .commentDate("yyyy-MM-dd")
                            .build() //构建器开始工作

                )
//                包配置
                .packageConfig(builder-> {
                    builder
                            .parent("com.lv.plus")
                            .entity("pojo")
                            .service("service")
                            .serviceImpl("service.impl")
                            .mapper("mapper")
                            .xml("mapper.xml")
                            .controller("controller")
                            .pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir") + "\\src\\main\\resources\\mapper"))
                            .build();
                })
//                注入配置
                .injectionConfig((builder) ->
                        builder.beforeOutputFile(
                                (a, b) -> log.warn("tableInfo: " + a.getEntityName())
                        )
                )
//                策略配置
                .strategyConfig((scanner, builder) ->
                        builder.addInclude(getTables(scanner.apply("请输入表名,多个英文逗号分隔?所有输入 all")))
                                .addTablePrefix("tb_")
                                .entityBuilder()
                                .enableChainModel()
                                .enableLombok()
                                .enableTableFieldAnnotation()
                                .addTableFills(
                                        new Column("create_time", FieldFill.INSERT)
                                )
                                .controllerBuilder()
                                .enableRestStyle()
                                .enableHyphenStyle()
                                .build())
                .templateEngine(new FreemarkerTemplateEngine())
                .execute();
    }

}

基础配置:

可选配置 :

全局配置(GlobalConfig):

 包配置(PackageConfig):

模板配置(TemplateConfig):

 注入配置(InjectionConfig):

策略配置(StrategyConfig): 

 运行:

 生成文件:

本期内容结束~~~~~~~~~~~~~~~~~~

猜你喜欢

转载自blog.csdn.net/weixin_60389087/article/details/123449164