MyBatis-Plus 代码生成器的配置

MyBatis-Plus 代码生成器的配置

为简化开发而生的Mybatis-Plus,作为一种Mybatis的增强工具,在 MyBatis 的基础上只做增强不做改变,确实给开发带来了不少的便利!其内置的代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置来满足各种个性化的开发使用,在这里,我只写一些代码生成器最基本的配置,以及对于一些官方代码使用的补充

Mybatis-Plus代码生成器官方示意图
Mybatis-Plus官方文档

在这里,我以Springboot工程来演示代码生成器

我使用的是Intellij IDEA的开发工具,JDK版本为1.8,使用内置的Spring Initializr来创建一个名为springboot-mybatisplus的Maven工程,在创建工程时,为满足代码生成器的使用,在搭建工程的时候,导入所需要的Dependences,如下图所示:(其中Lombok的使用看个人的使用需求)
创建工程索引入的依赖
其工程结构如下图所示:
项目结构示意图
为充分演示代码生成器的效果,在项目初次建立的时候就将java文件夹清空,以便观察。

根据MyBatis-Plus官方文档所言,从 3.0.3 之后移除了代码生成器与模板引擎的默认依赖,需要手动添加相关依赖
所以,我们在pom文件dependences下面引入如下依赖,并刷新maven工程:
(个人习惯引入阿里巴巴的druid数据库连接池)
mybatis-plus相关依赖
因为整体工程没有任何界面化,并且需要观察java文件夹下代码的生成的变化,所以代码生成器我放在了test/java目录下来进行生成,以下代码是对官方示例的代码生成器的一个解释和简化:

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


/**
 * Created by IntelliJ IDEA.
 *
 * @author xiren
 */
public class TestGenerator {
    
    

    //数据库连接参数
    public static String driver = "com.mysql.cj.jdbc.Driver";
    public static String url = "jdbc:mysql://localhost:3306/mybatisplus?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false";
    public static String username="root";
    public static String password="root";
    // 父级别包名称(看个人创建的目录)
    public static String parentPackage = "com.xiren";
    // 代码生成的目标路径
    public static String generateTo = "/src/main/java";
    // mapper.xml的生成路径
    public static String mapperXmlPath = "/src/main/resources/mapper";
    // 控制器的公共基类,用于抽象控制器的公共方法,null值表示没有父类
    public static String baseControllerClassName ;
    // 业务层的公共基类,用于抽象公共方法
    public static String baseServiceClassName ;
    // 作者名
    public static String author = "xiren";
    // 模块名称,用于组成包名(这块看个人需要是否再加一级目录)
    // public static String modelName = "portal";

	// 执行 main 自动生成对应项目目录中
    public static void main(String[] args) {
    
    
        // 代码生成器
        AutoGenerator mpg = new AutoGenerator();
        // 全局配置
        GlobalConfig gc = new GlobalConfig();
        // 当前工程目录模块
        String projectPath = System.getProperty("user.dir");
        // 文件输出目录(generateTo为上面定义的路径)
        gc.setOutputDir(projectPath + generateTo);
        // 添加作者信息
        gc.setAuthor(author);
        //设置时间类型为Date
        gc.setDateType(DateType.TIME_PACK);
        // 生成文件后不默认打开
        gc.setOpen(false);
        // 自定义service生成的名字,用于删除自动生成的I前缀
        gc.setServiceName("%sService");
        // 实体属性 Swagger2 注解,在这里没有需求,就默认注释了
        // gc.setSwagger2(true);
        gc.setBaseResultMap(true);
        mpg.setGlobalConfig(gc);

        // 数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl(url);
        // dsc.setSchemaName("public");
        dsc.setDriverName(driver);
        dsc.setUsername(username);
        dsc.setPassword(password);
        mpg.setDataSource(dsc);

        // 包配置
        PackageConfig pc = new PackageConfig();
        // pc.setModuleName(scanner("模块名"));
        // 父模块,已在上方定义
        pc.setParent(parentPackage);
        // 各个包目录起名
        pc.setEntity("entity");
        pc.setMapper("dao");
        pc.setService("service");
        pc.setController("controller");
        mpg.setPackageInfo(pc);


        // 策略配置
        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel);
        // 字段驼峰命名
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        // strategy.setSuperEntityClass("你自己的父类实体,没有就不用设置!");
        // 设置实体类的lombok(此处看个人使用,如果不使用lombok,那么在生成之后再去添加构造方法等等)
        strategy.setEntityLombokModel(true);
        strategy.setRestControllerStyle(true);
        // 公共父类
        // strategy.setSuperControllerClass("你自己的父类控制器,没有就不用设置!");
        // 写于父类中的公共字段
        // strategy.setSuperEntityColumns("id");
        
        // scanner("表名,多个英文逗号分割").split(",")
        strategy.setInclude(("backstage_account"));
        // 驼峰生成方法
        strategy.setControllerMappingHyphenStyle(true);
        // 删除前缀
        strategy.setTablePrefix("backstage_");
        mpg.setStrategy(strategy);
        // mpg.setTemplateEngine(new FreemarkerTemplateEngine());
        mpg.execute();
    }
}

在配置好这样一个generator后,我们直接运行,运行过程中控制台会执行一段生成文件的过程
当看到如下显示后便说明代码生成完成

=========================文件生成完成!!!==========================

Process finished with exit code 0

此时我们去看我们java的目录下面,就会有各种我们日常所需要的包生成出来,如下图:
代码生成成功示意图
显示至此,一个最基本最简单的代码生成器便完成了,当然这里生成的代码没有任何的功能包含在里面,实际的业务还需要自己去开发,但是确实要比我们自己一个个去建立包然后去写一个个java文件要快上不少,正如同Mybatis-Plus所说的效率至上,而Mybatis-Plus也提供了一些自定义的代码生成规则,包括可以生成带有CURD功能的整个后端系统,后面有机会我再去写一版更高级的自定义的代码生成器的文章,如果有兴趣的,想自己去研究的呢,这里我也帮你放好了Mybatis-Plus官方给你的自定义文档,可以去参考!

Mybatis-Plus代码生成器官方配置文档

祝各位码上无ERROR,键盘无BUG!!

猜你喜欢

转载自blog.csdn.net/czyying123/article/details/111540466