栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot整合新版Mybatis-Plus代码生成器

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot整合新版Mybatis-Plus代码生成器

文章目录
  • 一、前言
  • 二、正文
    • 1. pom依赖
    • 2. 项目结构
    • 3. 重头戏来了,AutoCodeGenerator类
    • 4. 演示代码生成
    • 5. 最终生成的模块
  • 三、总结

一、前言

题外话:Mybatis-Plus从3.0版本开始,已经支持国产达梦数据库了,那已经是18年的事情了。

这篇文章我们来介绍一下,Mybatis-Plus代码生成器,版本是最新版的3.5.1。以下内容仅适用 3.5.1 以上版本,对历史版本的不兼容。

二、正文 1. pom依赖

主要依赖是mybatis-plus代码生成器freemark模板引擎,其他不重要。


        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
        
            mysql
            mysql-connector-java
            runtime
            5.1.47
        
        
        
            com.alibaba
            druid-spring-boot-starter
            1.2.8
        
        
        
            com.baomidou
            mybatis-plus-boot-starter
            3.4.3.4
        
        
        
            com.baomidou
            mybatis-plus-generator
            3.5.1
        
        
        
            org.springframework.boot
            spring-boot-starter-freemarker
        
        
        
            cn.hutool
            hutool-all
            5.7.12
        
        
        
            com.github.xiaoymin
            knife4j-spring-boot-starter
            3.0.2
        

        
        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    
2. 项目结构

3. 重头戏来了,AutoCodeGenerator类

AutoCodeGenerator类是我在项目中创建的专门用来配置及进行代码生成的类,里面所有的配置项皆是研读官网文档,结合实际进行配置的,后续可随时根据官网文档进行修改。

其中所有的配置项几乎到增加了注释,因此不再过多解释,可直接看以下具体代码。

package com.ieslab.knife4j.demo.module.generator;

import com.baomidou.mybatisplus.core.mapper.baseMapper;
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.config.rules.DateType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

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


public class AutoCodeGenerator {

    public static void main(String[] args) {
        // 数据库配置
        DataSourceConfig.Builder dataSourceConfigBuilder = new DataSourceConfig
                .Builder("jdbc:mysql://localhost:3306/test" +
                "?useSSL=false&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true"
                , "root", "root");
        FastAutoGenerator.create(dataSourceConfigBuilder)
                // 全局配置
                .globalConfig((scanner, builder) -> {
                    builder.author(scanner.apply("请输入作者名称?"))
                            // 覆盖已生成文件
                            .fileOverride()
                            // 指定输出目录
                            .outputDir(System.getProperty("user.dir") + "/src/main/java/")
                            // 开启 swagger 模式
                            .enableSwagger()
                            // 禁止打开输出目录
                            .disableOpenDir()
                            // 时间策略
                            .dateType(DateType.TIME_PACK)
                            // 类注释日期的格式
                            .commentDate("yyyy-MM-dd HH:mm:ss")
                            .build();
                })
                // 包配置
                .packageConfig((scanner, builder) -> {
                    // 父包名
                    builder.parent(scanner.apply("请输入父包名?"))
                            // 模块名
                            .moduleName(scanner.apply("请输入模块名?"))
                            // Entity 包名
                            .entity("entity")
                            // Service 包名
                            .service("service")
                            //	Service Impl 包名
                            .serviceImpl("serviceImpl")
                            // Controller 包名
                            .controller("controller")
                            // Mapper 包名
                            .mapper("dao")
                            // MapperXML 包名
                            .xml("mapper")
                            // 路径配置信息
                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, System.getProperty("user.dir") + "/src/main/resources/mapper/"));
                })
                //策略配置
                .strategyConfig((scanner, builder) -> {
                    // 增加表匹配(内存过滤),	include 与 exclude 只能配置一项
                    builder.addInclude(getTables(scanner.apply("请输入要生成的表名,多个英文逗号分隔?所有输入 all")))
                            // 	增加表排除匹配(内存过滤),	include 与 exclude 只能配置一项
                            // .addExclude(scanner.apply("请输入要忽略的表名,多个英文逗号分隔?"))
                            // 	增加过滤表后缀
                            .addTableSuffix("")
                            // 	增加过滤表前缀
                            .addTablePrefix("")
                            // service 策略配置
                            .serviceBuilder()
                            // 	格式化文件名称
                            .formatServiceFileName("%sService")
                            .formatServiceImplFileName("%sServiceImpl")
                            // 实体策略配置
                            .entityBuilder()
                            // 开启 lombok 模型
                            .enableLombok()
                            // 开启生成实体时生成字段注解
                            .enableTableFieldAnnotation()
                            // controller 策略配置
                            .controllerBuilder()
                            .formatFileName("%sController")
                            // 开启生成@RestController 控制器
                            .enableRestStyle()
                            // 	mapper 策略配置
                            .mapperBuilder()
                            // 设置父类
                            .superClass(baseMapper.class)
                            .formatMapperFileName("%sMapper")
                            .enableMapperAnnotation()
                            .formatXmlFileName("%sMapper");
                })
                // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .templateEngine(new FreemarkerTemplateEngine())
                .execute();
    }

    
    protected static List getTables(String tables) {
        return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
    }
}

4. 演示代码生成



然后再次回车,就可以完成代码生成了。

5. 最终生成的模块

三、总结

Mybatis-Plus新版本的代码生成器,相对于历史版本而言要更加的清晰简单。

水贴。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/424031.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号