当前位置: 首页 > news >正文

MyBatis-Plus 代码生成器

MyBatis-Plus 代码生成器

  • 一、前言
  • 二、生成器版本为 3.5.1 及以下的方式
    • 引入依赖
    • 添加 模板引擎 依赖
    • 创建生成类
  • 三、生成器版本为 3.5.1 以上的方式
    • 引入依赖 及 模板引擎
    • 创建生成类

一、前言

AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。
官网有详细具体的说明用法,请前往 https://baomidou.com/guides/code-generator/ 具体查看。

我在此只做总结归纳

二、生成器版本为 3.5.1 及以下的方式

引入依赖

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.5.0</version>
</dependency>

添加 模板引擎 依赖

MyBatis-Plus 从 3.0.3 之后移除了代码生成器与模板引擎的默认依赖,需要手动添加相关依赖。
MyBatis-Plus 支持 Velocity、Freemarker、Beetl,用户可以选择自己熟悉的模板引擎,如果都不满足您的要求,可以采用自定义模板引擎。

Velocity:

<dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>最新版本</version>
</dependency>

Freemarker:

<dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>最新版本</version>
</dependency>

Beetl:

<dependency><groupId>com.ibeetl</groupId><artifactId>beetl</artifactId><version>最新版本</version>
</dependency>

注意!如果您选择了非默认引擎,需要在 AutoGenerator 中 设置模板引擎。

AutoGenerator generator = new AutoGenerator();// set freemarker engine
generator.setTemplateEngine(new FreemarkerTemplateEngine());// set beetl engine
generator.setTemplateEngine(new BeetlTemplateEngine());// set custom engine (reference class is your custom engine class)
generator.setTemplateEngine(new CustomTemplateEngine());// other config
...

创建生成类

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;import java.util.ArrayList;
import java.util.Scanner;/*** 类描述 -> 代码生成器*/
public class CodeGenerator {public static void main(String[] args) {// 代码生成器AutoGenerator mpg = new AutoGenerator();// 全局配置GlobalConfig gc = new GlobalConfig();String projectPath = System.getProperty("user.dir");// 设置代码生成路径,projectPath表示跟项目路径gc.setOutputDir(projectPath + "/src/main/java");// 是否覆盖以前文件gc.setFileOverride(true);// 是否打开生成目录gc.setOpen(false);// 设置项目作者名称gc.setAuthor("ywz");// 设置主键策略gc.setIdType(IdType.AUTO);// 生成基本ResultMapgc.setBaseResultMap(true);// 生成基本ColumnListgc.setBaseColumnList(true);// 去掉服务默认前缀gc.setServiceName("%sService");// 设置时间类型对应策略(DateType.ONLY_DATE 、 DateType.TIME_PACK)// 默认值为: DateType.TIME_PACK// gc.setDateType(DateType.TIME_PACK);// 实体类添加swagger注解gc.setSwagger2(true); mpg.setGlobalConfig(gc);// 数据源配置DataSourceConfig dsc = new DataSourceConfig();dsc.setUrl("jdbc:mysql://localhost:3306/sharding?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=UTC");dsc.setDriverName("com.mysql.cj.jdbc.Driver");dsc.setUsername("root");dsc.setPassword("root");mpg.setDataSource(dsc);// 包配置PackageConfig pc = new PackageConfig();// 设置父包名pc.setParent("com.example");// 设置Mapper接口所在的子包名pc.setMapper("mapper");// 设置Mapper XML文件所在的子包名pc.setXml("mapper.xml");// 设置实体类所在的子包名pc.setEntity("entity");// 设置Service所在的子包名pc.setService("service"); // 设置Serviceimpl所在的子包名pc.setServiceImpl("service.impl"); // 设置Controller所在的子包名pc.setController("controller");mpg.setPackageInfo(pc);// 策略配置StrategyConfig sc = new StrategyConfig();// 设置数据库表字段名转换为Java实体类属性名的命名策略为:下划线转驼峰命名法 sc.setNaming(NamingStrategy.underline_to_camel);// 设置数据库表字段名在Java实体类中的命名策略,同样采用下划线转驼峰命名法  sc.setColumnNaming(NamingStrategy.underline_to_camel);// 设置生成的实体类使用Lombok库来简化代码sc.setEntityLombokModel(true); // 设置生成的Controller类采用RESTful风格  sc.setRestControllerStyle(true);// 设置Controller类中@RequestMapping注解的路径映射风格为使用连字符(-) sc.setControllerMappingHyphenStyle(true);sc.setLogicDeleteFieldName("deleted");// 设置逻辑删除//设置自动填充配置TableFill gmt_create = new TableFill("create_time", FieldFill.INSERT);TableFill gmt_modified = new TableFill("update_time", FieldFill.INSERT_UPDATE);ArrayList<TableFill> tableFills = new ArrayList<>();tableFills.add(gmt_create);tableFills.add(gmt_modified);sc.setTableFillList(tableFills);//乐观锁sc.setVersionFieldName("version");//  sc.setTablePrefix("tbl_"); 设置表名前缀// 设置要生成的表名sc.setInclude(scanner("表名,多个英文逗号分割").split(","));mpg.setStrategy(sc);// 生成代码mpg.execute();}/*** 方法描述 -> 控制台输入* @param tip 提示信息*/public static String scanner(String tip) {Scanner scanner = new Scanner(System.in);System.out.println("请输入" + tip + ":");if (scanner.hasNext()) {String ipt = scanner.next();if (StringUtils.isNotBlank(ipt)) {return ipt;}}throw new MybatisPlusException("请输入正确的" + tip + "!");}
}

三、生成器版本为 3.5.1 以上的方式

全新的 MyBatis-Plus 代码生成器,通过 builder 模式可以快速生成你想要的代码,快速且优雅,跟随下面的代码一睹为快。

引入依赖 及 模板引擎

 <!-- MyBatis-Plus代码生成器(逆向工程)-->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.5.7</version>
</dependency><!-- MyBatis-Plus代码生成器所需引擎 模板引擎来生成代码文件 -->
<dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId>
</dependency>

创建生成类

package com.example.springbootfull.mybatisplustest.util;import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;import java.sql.Types;
import java.util.Collections;public class MybatisPlusGenerator {public static void main(String[] args) {//数据库连接的URL地址String url = "jdbc:mysql://localhost:3306/sharding?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=UTC";//账号String username = "root";//密码String password = "root";//作者名称String author="jiang";// 设置父包名String packageParent="com.example.springbootfull";// 设置父包模块名String packageModuleName="mybatisplustest";// 想要自动化的表,多张表就以,隔开String tableInclude="sys_user";FastAutoGenerator.create(url, username, password).globalConfig(builder -> {builder.author(author) // 设置作者//.enableSwagger() // 开启 swagger 模式.outputDir(System.getProperty("user.dir")+"/src/main/java"); // 指定输出目录}).dataSourceConfig(builder ->builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {int typeCode = metaInfo.getJdbcType().TYPE_CODE;if (typeCode == Types.SMALLINT) {// 自定义类型转换return DbColumnType.INTEGER;}return typeRegistry.getColumnType(metaInfo);})).packageConfig(builder ->builder.parent(packageParent) // 设置父包名.moduleName(packageModuleName) // 设置父包模块名.pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir") +"/src/main/resources/mapper/")) // 设置mapperXml生成路径).strategyConfig(builder ->builder.addInclude(tableInclude) // 设置需要生成的表名//.addTablePrefix("t_", "c_") // 设置过滤表前缀.entityBuilder().enableLombok().enableFileOverride().controllerBuilder().enableFileOverride().mapperBuilder().enableFileOverride().serviceBuilder().enableFileOverride()).templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板.execute();}
}

http://www.mrgr.cn/news/56546.html

相关文章:

  • 【分布式技术】中间件-zookeeper安装配置
  • javaweb-mybatis之动态sql
  • 多一DY4100数字式接地电阻测试仪使用测量方法
  • 意外断电 导致docker 部署禅道 的mariadb 启动报错
  • STM32启动文件浅析
  • Linux系统安装软件的4种方式【源码配置编译安装、yum安装、rpm包安装、二进制软件包安装(.rpm/.tar.gz/.tgz/.bz2)】
  • java--多态(详解)
  • 00 DSA-- 入门、实现动态数组
  • 阅读笔记 Contemporary strategy analysis Chapter 13
  • 算法题总结(二十)——并查集
  • stm32精密控制步进电机(基础篇)
  • 思想是花 嘴是大地
  • 考研篇——数据结构王道3.2.2_队列的顺序实现
  • linux—基础命令及相关知识
  • 对比学习论文随笔 1:正负样本对(Contrastive Learning 基础论文篇)
  • 基于单片机的磁耦合谐振式无线电能传输系统设计
  • 【R + Python】iNaturalist 网站图片下载 inat api
  • MySQL 中 LIKE 模糊查询如何优化?
  • 三维重建新范式对比与发展趋势
  • 从事互联网4年经历
  • 计算机网络:数据链路层 —— 无线局域网 WLAN
  • 【ShuQiHere】深入解析数字电路中的锁存器与触发器
  • 数据库安全:如何进行数据库安全审计?
  • 常见的点云数据存储格式及其应用
  • 计算机毕业设计Spark+大模型动漫推荐系统 动漫视频推荐系统 漫画分析可视化大屏 漫画爬虫 漫画推荐系统 漫画爬虫 知识图谱 大数据
  • 基于 STM32 单片机的智能门禁系统创新设计