简介

MyBatis Plus 是一个MyBatis的增强工具,内置通用mapper,提供了基本的curd操作,简化了MyBatis的开发使用工作。 它提供了一个代码生成器工具,可以根据数据库表来自动生成entity、mapper、mapper xml、service、controller等模块的代码,简化项目的初始化工作。

本文示例所用版本:

MyBatis-Plus: 3.4.3.1

mybatis-plus-generator: 3.5.0

使用

maven依赖配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<!-- mybatis-plus gen -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.0</version>
</dependency>
<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-engine-core</artifactId>
    <version>2.3</version>
</dependency>

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package xyz.urzz.selfpubgservice;

import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

public class MybatisPlusGen {
    public static final String DB_URL = "jdbc:mysql://${mysql_server}:3306/${db_name}";
    public static final String DB_USERNAME = "user";
    public static final String DB_PASSWD = "passwd";

    public static final String CODE_GEN_PATH = "/src/main/java";
    public static final String CODE_AUTHOR = "urzz";
    public static final String PACKAGE_PARENT = "xyz.urzz";
    public static final String PACKAGE_MODULE = "module";

    public static final String DB_TABLE_PREFIX = "t_";

    public static void main(String[] args) {
        // db config
        DataSourceConfig dataSourceConfig = new DataSourceConfig
                .Builder(DB_URL, DB_USERNAME, DB_PASSWD)
                .build();

        // code gen path config
        String projectPath = System.getProperty("user.dir");
        GlobalConfig globalConfig = new GlobalConfig.Builder()
                .outputDir(projectPath + CODE_GEN_PATH)
                .openDir(false)
                // 覆盖文件
                //.fileOverride()
                .author(CODE_AUTHOR)
                .build();

        // code gen package config
        PackageConfig packageConfig = new PackageConfig.Builder()
                .parent(PACKAGE_PARENT)
                .moduleName(PACKAGE_MODULE)
                .build();

        // code gen strategy config
        StrategyConfig strategyConfig = new StrategyConfig.Builder()
                // table prefix
                .addTablePrefix(DB_TABLE_PREFIX)
                .entityBuilder()
                // table -> entity
                .naming(NamingStrategy.underline_to_camel)
                // column -> field
                .columnNaming(NamingStrategy.underline_to_camel)
                // entity add lombok
                .enableLombok()
                .mapperBuilder()
                // mapper add column list
                .enableBaseColumnList()
                // mapper add column map
                .enableBaseResultMap()
                .build();

        TemplateConfig templateConfig = new TemplateConfig.Builder()
                // disable gen controller
                .disable(TemplateType.CONTROLLER)
                .build();

        AutoGenerator autoGenerator = new AutoGenerator(dataSourceConfig);
        autoGenerator.global(globalConfig)
                .strategy(strategyConfig)
                .template(templateConfig)
                .packageInfo(packageConfig);

        autoGenerator.execute();
    }
}

类生成的相关配置在下列的各个配置类中,示例中只是展示了部分的配置。

  • DataSourceConfig 数据库链接配置
  • PackageConfig 类的包路径等配置
  • StrategyConfig 生成策略配置
  • TemplateConfig 模板配置
  • GlobalConfig 全局配置

mybatis-plus-generator 默认使用velocity作为类生成的模板引擎,出了velocity之外,也提供了freemarker和beetl的实现。generator也支持自定义模板,如需自定义,可以继承 AbstractTemplateEngine,参考 VelocityTemplateEngine 的实现。

使用生成器,极大的简化了项目的初始化工作,可以无需编写繁琐的entity到mapper到service的这一套代码,还是可以大大提升开发效率的。