【Spring Boot】Mybatis Plus 3.1.X 自动生成代码配置

【引言】

    在前面的spring boot与mybatis plus 集成的相关博客中,用的是2.x的版本,而mybatis plus已经发布3.1.x版本,所以,参照着官方文档,将集成spring boot应用,实践下代码自动生成。

【核心源码】

    AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。

    生成的核心方法是execute,源代码如下:

public void execute() {
    logger.debug("==========================准备生成文件...==========================");
    if (null == this.config) {
        this.config = new ConfigBuilder(this.packageInfo, this.dataSource, this.strategy, this.template, this.globalConfig);
        if (null != this.injectionConfig) {
            this.injectionConfig.setConfig(this.config);
        }
    }

    if (null == this.templateEngine) {
        this.templateEngine = new VelocityTemplateEngine();
    }

    this.templateEngine.init(this.pretreatmentConfigBuilder(this.config)).mkdirs().batchOutput().open();
    logger.debug("==========================文件生成完成!!!==========================");
}

     代码生成主要配置以下几项即可:

// 数据源配置
private DataSourceConfig dataSource;
// 策略配置
private StrategyConfig strategy;
// 包配置
private PackageConfig packageInfo;
// 模板配置
private TemplateConfig template;
// 全局配置
private GlobalConfig globalConfig;

【实现步骤】

    1. 添加依赖

    MyBatis-Plus 从 3.0.3 之后移除了代码生成器与模板引擎的默认依赖,需要手动添加相关依赖:

<!-- 代码生成配置 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.1.1</version>
</dependency>
<!-- spring boot 与 mybatis plus 集成starter -->
<dependency>
   <groupId>com.baomidou</groupId>
   <artifactId>mybatis-plus-boot-starter</artifactId>
   <version>3.1.1</version>
</dependency>
 <!-- 模板引擎 -->
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.28</version>
</dependency>

    2. 全局配置

// 全局配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
// 配置代码输出目录
gc.setOutputDir(projectPath + "/src/main/java");
// 配置作者
gc.setAuthor("huzhiting");
gc.setOpen(false);
// gc.setSwagger2(true); 实体属性 Swagger2 注解

    3. 数据源配置

// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/demo?useUnicode=true&useSSL=false&characterEncoding=utf8");
// dsc.setSchemaName("public");
dsc.setDriverName("com.mysql.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("123456");

    4. 包配置

// 包配置
PackageConfig pc = new PackageConfig();
//pc.setModuleName(scanner("模块名"));
pc.setParent("com.example.mybatisplus");
mpg.setPackageInfo(pc);

    上述代码中如果设置模块名,则生成的代码是按模块分的;结构如下:

src
└── main
    ├── java
    │   └── com
    │       └── example
    │               └── mybatisplus
    │               ├── Application.java
    │               ├── region
    │               │   └── controller
    │               │       ├── RegionController.java
    │               │   └── service
    │               │       └── impl
    │               │          ├── RegionServiceImpl.java
    │               │       ├── IRegionService.java
    │               │   └── mapper
    │               │       ├── RegionMapper.java
    │               │   └── entity
    │               │       ├── Region.java
    │               ├── user
    │               │   └── controller
    │               │       ├── UserController.java
    │               │   └── service
    │               │       └── impl
    │               │          ├── UserServiceImpl.java
    │               │       ├── IUserService.java
    │               │   └── mapper
    │               │       ├── UserMapper.java
    │               │   └── entity
    │               │       ├── User.java
    └── resources
            ├── application.properties
            └── mapper
                ├── region
                │   └── RegionMapper.xml
                ├── user
                │   └── UserMapper.xml

    不设置则是各个模块的各层代码在同一个包下,结构如下:

src
└── main
    ├── java
    │   └── com
    │       └── example
    │               └── mybatisplus
    │               ├── Application.java
    │               ├── controller
    │               │   └── RegionController.java
    │               │   └── UserController.java
    │               ├── service
    │               │   ├── impl.java
    │               │       └── RegionServiceImpl.java
    │               │       └── UserServiceImpl.java
    │               │   └── IRegionService.java
    │               │   └── IUserService.java
    │               ├── mapper
    │               │   └──  RegionMapper.java
    │               │   └──  UserMapper.java
    │               ├──  entity
    │               │   └──  Region.java
    │               │   └──  User.java
    └── resources
        ├── application.properties
        └── mapper
          └── RegionMapper.xml
          └── UserMapper.xml

    通过以上包配置,便可根据以往的项目习惯自行配置项目目录结构。

    5. 策略配置

// 策略配置
StrategyConfig strategy = new StrategyConfig();
// 命名规则
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
//strategy.setSuperEntityClass("com.example.mybatisplus.common.BaseEntity");
// 实体是否使用Lombok插件
strategy.setEntityLombokModel(true);
// 控制层是否使用Rest风格
strategy.setRestControllerStyle(true);
//strategy.setSuperControllerClass("com.baomidou.ant.common.BaseController");
strategy.setInclude(scanner("表名").split(","));
strategy.setSuperEntityColumns("id");
strategy.setControllerMappingHyphenStyle(true);
strategy.setTablePrefix(pc.getModuleName() + "_");

    通过以上添加依赖和相关配置的所有步骤,便可成功自动生成代码,控制台打印信息如下:
在这里插入图片描述
    生成的代码在项目中的目录结构如下:
在这里插入图片描述

    完整代码以上传至github,地址如下:

        https://github.com/huzhiting/spring-boot-mybatisplus-3.1.x

【总结】

    最近接触的新项目用的是3.1.x版本,在使用自动生成代码一套东西发现和之前自己使用2.x版本有所不同,所以想自己动手实践一把。过程中没有遇到什么错误,依照着文档很顺利完成了,也算是又一次丰富了自己的知识积累。

猜你喜欢

转载自blog.csdn.net/u013034223/article/details/90755633