Mybatis-plus-generator 代码生成器使用

前言

发布这篇文章是记录我在项目开发时使用 Mybatis-plus 逆向工程时遇到并解决的问题。

在开发前不久,像是一两个月的样子,Mybatis-plus 逆向工程就在我玩过 Mybatis 的逆向后我就做了个小 demo 玩了一下,那个时候用的是 Mybatis-plus-generator 的旧版本 3.4.0。但气人的就是那个时候多次试用测试都相当好用,直到这一天我开发项目时重新用了一遍,就出问题了。。

问题出现

因为原本的代码被我优化掉了,所以现有项目存在的是能够正常使用的代码,那么我就简单讲一下问题:

1. 生成目录而不生成目录下的文件

p1

ps:看到 p1 的同学估计会猜测是我的路径出现了问题,或者是配置信息不全。但这些我都是一一排除,并不是这里的问题。

2. 生成到其他地方,死活不去到工程模块中

p2

ps:这个类我加上了 @Deprecated 注解,后续会提供一下源码仓库地址。

问题解决

在百度转了好几圈,一无所获。解决的人方式无非就是检查数据源url、数据库表名提供。这些当然我也仔细检查过,包括从仓库拉回原来的小 demo 跑,一跑哭笑不得:原本一两个月前好好的 demo 现在一跑就崩了。最终认为是版本问题

下面是项目代码片段

部分依赖

```xml

<dependency>

    <groupId>com.baomidou</groupId>

    <artifactId>mybatis-plus-boot-starter</artifactId>

    <version>3.5.3.1</version>


    <groupId>com.baomidou </groupId>

    <artifactId>mybatis-plus-generator</artifactId>

    <version>3.5.3.1</version>

</dependency>

```

Config 包下的 MpGeneratorConfigur 配置类

```java

package cn.deities.colleges.config;

import cn.deities.colleges.utils.SimpleDataSourceInfoParser;

import com.baomidou.mybatisplus.annotation.FieldFill;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;

import com.baomidou.mybatisplus.extension.service.IService;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;

import com.baomidou.mybatisplus.generator.config.OutputFile;

import com.baomidou.mybatisplus.generator.config.TemplateConfig;

import com.baomidou.mybatisplus.generator.config.TemplateType;

import com.baomidou.mybatisplus.generator.config.rules.DateType;

import com.baomidou.mybatisplus.generator.fill.Column;

import lombok.extern.slf4j.Slf4j;

import java.util.Collections;

import java.util.Objects;

import static cn.deities.colleges.constant.UrlPackage.*;

import static cn.deities.colleges.utils.abstractor.AbstractDataSourceInfoParser.*;

/**

* @author 1.

* @version 1.0

* @description: Mybatis-plus generator 代码自动生成器

* @date 2023/4/17 16:33

*/

@Slf4j

public class MPGeneratorConfigur {

public static void main(String[]args) {

        /// 获取数据源信息解析器

        final SimpleDataSourceInfoParser simpleDataSourceInfoParser =new SimpleDataSourceInfoParser();

        /// 代码生成器

        FastAutoGenerator.create(URL, USER_NAME, PASS_WORD)

.globalConfig(builder -> {

builder.author("1.")

.commentDate("yyyy-MM-dd")

.dateType(DateType.ONLY_DATE)

.outputDir(ROOT_PROJECT_URL);

                })

.packageConfig(builder -> {

builder.parent(PARENT_URL)

.entity("po")

.service("bo")

.serviceImpl("bo.impl")

.mapper("dao")//映射类

                            .xml("")

.pathInfo(Collections.singletonMap(OutputFile.xml, XML_URL));

                })

.strategyConfig(builder -> {

builder.addInclude(Objects.requireNonNull(simpleDataSourceInfoParser.getTableNames("colleges")))

.enableCapitalMode();

                    //Mapper 策略配置

                    builder.mapperBuilder()

.enableFileOverride()//生成文件时覆盖原有文件

                            .superClass(BaseMapper.class)

.formatMapperFileName("%sMapper")

.formatXmlFileName("%sXml");

                    //Entity 策略配置

                    builder.entityBuilder()

.enableFileOverride()

.enableChainModel()//开启链式模型

                            .enableLombok()

.enableTableFieldAnnotation()

.addTableFills(new Column("create_time", FieldFill.INSERT),

                                    new Column("storage_time",FieldFill.INSERT));

                    //Service 策略配置

                    builder.serviceBuilder()

.enableFileOverride()

.superServiceClass(IService.class)//服务接口父接口

                            .superServiceImplClass(ServiceImpl.class); //服务实现类父类

                })

.templateConfig(builder -> {

builder.disable(TemplateType.CONTROLLER);

                })

.execute();

    }

}

```

结果

p3

到这里终于是费力地实现了省力工程哈哈哈。

ps:上述代码截取自我正开发的项目,提供给大家参考,可以学习使用的源码地址在这。其中的 Mybatis-generator 是否可用也没有去追究了,等我用到再说吧。


时刻保持谦卑的心,学无止境!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容