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

MyBatisPlus逆向工程

依赖

 <!--Mybatis-plus逆向生成器依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.4.1</version></dependency><!--Mybatis-plus逆向生成器的Freemarker模板引擎--><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.31</version></dependency>

代码

package com.admin.util;import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;/*** @Author: huangjun* @Date: 2024/1/8 17:02* @Version: 1.0* @Description:*/
public class Generator {private final static AutoGenerator autoGenerator = new AutoGenerator();/*** 全局配置  生成路径*/private final static String GLOBAL_PROJECT_PATH = System.getProperty("user.dir");//全局配置 作者private final static String GLOBAL_AUTHOR = "huangjun";/*** 数据库配置信息*/private final static String JDBC_URL = "jdbc:mysql://localhost:3306/mywork?useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai";private final static String JDBC_USERNAME = "root";private final static String JDBC_PASSWORD = "root";private final static String JDBC_DRIVERNAME = "com.mysql.cj.jdbc.Driver";private final static DbType JDBC_DBTYPE = DbType.MYSQL;/*** 包信息配置*/private final static String PACKAGE_PARENT = "com.admin";private final static String PACKAGE_CONTROLLER = "controller";private final static String PACKAGE_ENTITY = "entity";private final static String PACKAGE_MAPPER = "mapper";private final static String PACKAGE_SERVICE = "service";private final static String PACKAGE_SERVICE_IMPL = "service.impl";/*** 模板文件路径*/private final static String XML_TEMPLATE_PATH = "/templates/mapper.xml.ftl";private final static String MAPPER_TEMPLATE_PATH = "/templates/mapper.java.ftl";private final static String SERVICE_TEMPLATE_PATH = "/templates/service.java.ftl";private final static String SERVICE_IMPL_TEMPLATE_PATH = "/templates/serviceImpl.java.ftl";private final static String ENTITY_TEMPLATE_PATH = "/templates/entity.java.ftl";private final static String CONTROLLER_TEMPLATE_PATH = "/templates/controller.java.ftl";/*** 项目信息*/private final static String PARENT_REAL_PATH = GLOBAL_PROJECT_PATH + "/src/main/java/com/admin";private final static String CONTROLLER_REAL_PATH = PARENT_REAL_PATH + "/controller/";private final static String SERVICE_REAL_PATH = PARENT_REAL_PATH + "/service/";private final static String SERVICE_IMPL_REAL_PATH = PARENT_REAL_PATH + "/service/impl/";private final static String MAPPER_XML_REAL_PATH = GLOBAL_PROJECT_PATH + "/src/main/resources/mapper/";private final static String MAPPER_JAVA_REAL_PATH = PARENT_REAL_PATH + "/mapper/";private final static String ENTITY_REAL_PATH = PARENT_REAL_PATH + "/entity/";/*** 逆向生成类去除表名的前缀*/private final static String STRATEGY_TABLE_PREFIX = "";/*** 数据源的配置*/private static void dataSourceConfig(){DataSourceConfig dataSourceConfig = new DataSourceConfig().setUrl(JDBC_URL).setUsername(JDBC_USERNAME).setPassword(JDBC_PASSWORD).setDriverName(JDBC_DRIVERNAME).setDbType(JDBC_DBTYPE);autoGenerator.setDataSource(dataSourceConfig);}/*** 全局配置*/private static void globalConfig(){GlobalConfig globalConfig = new GlobalConfig();// 输出文件路径globalConfig.setOutputDir(GLOBAL_PROJECT_PATH + "/src/main/java")// 设置作者名字.setAuthor(GLOBAL_AUTHOR)// 是否打开资源管理器.setOpen(false)// 是否覆盖原来生成的.setFileOverride(true)// 主键策略.setIdType(IdType.AUTO)// 生成resultMap.setBaseResultMap(true)// 设置时间格式,采用Date.setDateType(DateType.ONLY_DATE)// 生成的service接口名字首字母是否为I.setServiceName("I%sService")//XML中生成基础列.setBaseColumnList(true);autoGenerator.setGlobalConfig(globalConfig);}/*** 包属性的配置*/private static void packageConfig(){// 配置指定项目中各层的名称PackageConfig packageConfig = new PackageConfig();packageConfig.setParent(PACKAGE_PARENT)// Controller层.setController(PACKAGE_CONTROLLER)// 实体层(pojo层).setEntity(PACKAGE_ENTITY)// Dao 层.setMapper(PACKAGE_MAPPER)// service层.setService(PACKAGE_SERVICE)// ServiceImp层.setServiceImpl(PACKAGE_SERVICE_IMPL);autoGenerator.setPackageInfo(packageConfig);}/*** 逆向生成类的名称配置*/private static void strategyConfig(){StrategyConfig strategyConfig = new StrategyConfig();// 开启全局大写命名strategyConfig// 设置要映射的表.setInclude(INCLUDE_TABLES.split(",")).setCapitalMode(true)// 下划线到驼峰的命名方式.setNaming(NamingStrategy.underline_to_camel)// 下划线到驼峰的命名方式.setColumnNaming(NamingStrategy.underline_to_camel)// 是否使用lombok.setEntityLombokModel(true)// 是否开启rest风格.setRestControllerStyle(true)// 去除前缀.setTablePrefix(STRATEGY_TABLE_PREFIX).setControllerMappingHyphenStyle(true);autoGenerator.setStrategy(strategyConfig);autoGenerator.setTemplateEngine(new FreemarkerTemplateEngine());}/*** 在resource目录下生成Mapper文件的配置*/private static void injectionConfig(){InjectionConfig injectionConfig = new InjectionConfig() {@Overridepublic void initMap() {this.setMap(new HashMap<>());}};List<FileOutConfig> fileOutConfigList = new ArrayList<>();// 根据/templates/mapper.xml.ftl规则在指定的位置生成Mapper文件,可以在多个地方生成。fileOutConfigList.add(new FileOutConfig(XML_TEMPLATE_PATH) {@Overridepublic String outputFile(TableInfo tableInfo) {// 返回Mapper文件的绝对路径return MAPPER_XML_REAL_PATH +tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;}});// 将对Mapper文件的配置添加到文件输出对象中injectionConfig.setFileOutConfigList(fileOutConfigList);autoGenerator.setCfg(injectionConfig);}/*** java文件的的配置*/private static void initInjectionConfigForJava(){InjectionConfig injectionConfig = new InjectionConfig() {@Overridepublic void initMap() {// 实现InjectionConfig抽象类就需要初始化一个Map集合this.setMap(new HashMap<>());}};List<FileOutConfig> fileOutConfigList = new ArrayList<>();//mapper.java的文件路径配置fileOutConfigList.add(new FileOutConfig(MAPPER_TEMPLATE_PATH) {@Overridepublic String outputFile(TableInfo tableInfo) {return MAPPER_JAVA_REAL_PATH+ tableInfo.getEntityName() + "Mapper" + StringPool.DOT_JAVA;}});//service.java的文件路径配置fileOutConfigList.add(new FileOutConfig(SERVICE_TEMPLATE_PATH) {@Overridepublic String outputFile(TableInfo tableInfo) {return SERVICE_REAL_PATH+ "I" + tableInfo.getEntityName() + "Service" + StringPool.DOT_JAVA;}});//serviceImpl.java的文件路径配置fileOutConfigList.add(new FileOutConfig(SERVICE_IMPL_TEMPLATE_PATH) {@Overridepublic String outputFile(TableInfo tableInfo) {return SERVICE_IMPL_REAL_PATH+ tableInfo.getEntityName() + "ServiceImpl" + StringPool.DOT_JAVA;}});//controller.java的文件路径配置fileOutConfigList.add(new FileOutConfig(CONTROLLER_TEMPLATE_PATH) {@Overridepublic String outputFile(TableInfo tableInfo) {return CONTROLLER_REAL_PATH+ tableInfo.getEntityName() + "Controller" + StringPool.DOT_JAVA;}});//entity.javafileOutConfigList.add(new FileOutConfig(ENTITY_TEMPLATE_PATH) {@Overridepublic String outputFile(TableInfo tableInfo) {return ENTITY_REAL_PATH+ tableInfo.getEntityName() + StringPool.DOT_JAVA;}});injectionConfig.setFileOutConfigList(fileOutConfigList);autoGenerator.setCfg(injectionConfig);}/*** 配置生成器的生成模板*/private static void templateConfig() {TemplateConfig templateConfig = new TemplateConfig();templateConfig.setXml(null);autoGenerator.setTemplate(templateConfig);}//初始化static {globalConfig();dataSourceConfig();packageConfig();strategyConfig();injectionConfig();//initInjectionConfigForJava();templateConfig();}private final static String INCLUDE_TABLES ="student";public static void main(String[] args) {autoGenerator.execute();}
}
http://www.lryc.cn/news/279872.html

相关文章:

  • 创建ESP32开源WiFi MAC(介质访问控制)层
  • LeetCode 2723. 两个 Promise 对象相加
  • Flutter--常用技术文档
  • 行分类问题
  • java常见面试题:如何使用Java进行XML解析和生成?
  • 【LabVIEW FPGA入门】LabVIEW FPGA实现I2S解码器
  • linux 安装sipp
  • c++最值查找
  • xtu-c语言考试复习-2
  • MySQL决战:MySQL数据导入导出
  • Unity 面试篇|(二)Unity基础篇 【全面总结 | 持续更新】
  • TIDB的忘了root用户密码和数据库密码解决办法
  • QT基础篇(4)QT5基本对话框
  • Springboot项目Nacos做配置中心
  • SpringSecurity入门demo(三)多用户身份认证
  • 【设计模式-02】Strategy策略模式及应用场景
  • ssh远程登陆
  • go如何终止多个for select循环嵌套
  • nginx(1.13.7)首次安装出现:【make: *** 没有规则可以创建“default”需要的目标“build” 问题】解决措施
  • 2024.1.8 关于 Redis 数据类型 Zset 集合命令、编码方式、应用场景
  • ffmpeg[学习(四)](代码实现) 实现音频数据解码并且用SDL播放
  • C++ 字符串哈希 || 字符串前缀哈希法
  • 【java】项目部署liunx服务器的简单步骤
  • 深度学习笔记(五)——网络优化(1):学习率自调整、激活函数、损失函数、正则化
  • 鸿蒙开发现在就业前景怎样?
  • 试用统信服务器操作系统UOS 20
  • [情商-11]:人际交流的心理架构与需求层次模型
  • 【.NET Core】Lazy<T> 实现延迟加载详解
  • 坑记(HttpInputMessage)
  • day04打卡