博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mybatis Plus 逆向生成实体类、实现类、控制层
阅读量:2386 次
发布时间:2019-05-10

本文共 5084 字,大约阅读时间需要 16 分钟。

1、引入依赖

com.baomidou
mybatis-plus-boot-starter
3.1.0
com.baomidou
mybatis-plus-extension
3.1.0
com.baomidou
mybatis-plus-generator
3.1.2
org.freemarker
freemarker
2.3.30

2、编写工具类

import com.baomidou.mybatisplus.annotation.IdType;import com.baomidou.mybatisplus.core.toolkit.StringPool;import com.baomidou.mybatisplus.core.toolkit.StringUtils;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.List;/** * @Author Minco * @Date 10:55 2020-09-02 * @Description MpGeneratorUtils */public class MpGeneratorUtils {    public static void executeCode(String pack,String project,String dbUrl, String dbDriverName,String dbUsername,                                    String dbPassword, String[] tables, String[] tablePrefixs) {        // 代码生成器        AutoGenerator mpg = new AutoGenerator();        // 全局配置        GlobalConfig gc = new GlobalConfig();        // 是否覆盖已有文件        gc.setFileOverride(false);        // 生成文件的输出目录        String projectPath = System.getProperty("user.dir") +project;//user.dir 表示当前工程路径无需替换        gc.setOutputDir(projectPath +"/src/main/java");        //设置bean命名规范        gc.setEntityName("%s");        // 开发人员        gc.setAuthor("Minco");        // 是否打开输出目录        gc.setOpen(false);        // 开启 BaseResultMap        gc.setBaseResultMap(true);        // 指定生成的主键的ID类型        gc.setIdType(IdType.ID_WORKER);        // 时间类型对应策略: 只使用 java.util.date 代替        gc.setDateType(DateType.ONLY_DATE);        mpg.setGlobalConfig(gc);        // 数据源配置        DataSourceConfig config = new DataSourceConfig();        // 从试图获取        config.setUrl(dbUrl);        config.setDriverName(dbDriverName);        config.setUsername(dbUsername);        config.setPassword(dbPassword);        mpg.setDataSource(config);        // 包配置        PackageConfig pc = new PackageConfig();        // 父包名。如果为空,将下面子包名必须写全部, 否则就只需写子包名        pc.setParent(pack);        // Entity包名        pc.setEntity("domain");        mpg.setPackageInfo(pc);        // 自定义配置        InjectionConfig cfg = new InjectionConfig() {            @Override            public void initMap() {                // to do nothing            }        };        List
focList = new ArrayList<>(); focList.add(new FileOutConfig("/templates/mapper.xml.ftl") { public String outputFile(TableInfo tableInfo) { // 自定义输入文件名称 if (StringUtils.isEmpty(pc.getModuleName())) { return projectPath + "/src/main/resources/mappers/" + tableInfo.getXmlName() + StringPool.DOT_XML; } else { return projectPath + "/src/main/resources/mappers/" + pc.getModuleName() + "/" + tableInfo.getXmlName() + StringPool.DOT_XML; } } }); cfg.setFileOutConfigList(focList); mpg.setCfg(cfg); mpg.setTemplate(new TemplateConfig().setXml(null)); // 策略配置 StrategyConfig strategy = new StrategyConfig(); // 数据库表映射到实体的命名策略: 下划线转驼峰命名 strategy.setNaming(NamingStrategy.underline_to_camel); // 数据库表字段映射到实体的命名策略: 下划线转驼峰命名 strategy.setColumnNaming(NamingStrategy.underline_to_camel); // 【实体】是否为lombok模型(默认 false) strategy.setEntityLombokModel(true); // 需要包含的表名,允许正则表达式(与exclude二选一配置) strategy.setInclude(tables); // 驼峰转连字符 strategy.setControllerMappingHyphenStyle(true); // 表前缀 strategy.setTablePrefix(tablePrefixs); mpg.setStrategy(strategy); mpg.setTemplateEngine(new FreemarkerTemplateEngine()); mpg.execute(); }}

3、直接main方法运行生成代码

public static void main(String[] args) {        String project="/XXX"; //多模块项目所以把项目名的路径也带上了,单模块给个空引号        String packageName = "com.XXX.XXX"; //完整包名        String dbUrl="jdbc:mysql://127.0.0.1:3306/e3_test?useUnicode=true&characterEncoding=UTF8&allowMultiQueries=true&useSSL=false&serverTimezone=UTC";        String dbDriverName="com.mysql.cj.jdbc.Driver";        String dbUsername="root";        String dbPassword="XXXX";        String[] tables = new String[]{"order_return_goods","order_return","order_info","order_goods"};//表名数组        String[] tablePrefixs = new String[]{""};//去掉前缀        MpGeneratorUtils.executeCode(packageName, project,dbUrl,dbDriverName,dbUsername,dbPassword,tables, tablePrefixs);    }

4、生成的代码展示

 

转载地址:http://ynnab.baihongyu.com/

你可能感兴趣的文章
正则表达式与文件格式化处理
查看>>
Java EE互联网轻量级框架整合开发
查看>>
Java语言程序设计(基础篇)
查看>>
大型网站技术架构:核心原理与案例分析
查看>>
JAVA并发编程实战
查看>>
RabbitMQ实战++高效部署分布式消息队列
查看>>
微服务设计
查看>>
Spring Cloud微服务实战
查看>>
C++ static 语义
查看>>
C++ static 语义
查看>>
Linux Cgroups概述
查看>>
centos7 硬盘性能测试
查看>>
cgroup使用--cpu资源限制
查看>>
cgroup使用--memory资源限制
查看>>
Redis 单机环境搭建
查看>>
elasticsearch 单机环境搭建
查看>>
spark 独立模式部署
查看>>
Redis 基础命令 --- String篇
查看>>
Redis 基础命令 --- Hash篇
查看>>
Redis 基础命令 --- List篇
查看>>