大佬教程收集整理的这篇文章主要介绍了Spring Boot整合MybatisPlus逆向工程(MySQL/PostgreSQL),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
MyBatis-Plus是MyBatis的增强工具,Generator通过MyBatis-Plus快速生成Entity、Mapper、Mapper XML、service、Controller等模块的代码,方便快捷。@H_489_1@
我们先创建数据库表:sys_log@H_489_1@
CREATE TABLE `sys_log` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `username` varchar(50) DEFAULT NULL COMMENT '用户名', `operation` varchar(50) DEFAULT NULL COMMENT '用户操作', `method` varchar(200) DEFAULT NULL COMMENT '请求方法', `params` varchar(5000) DEFAULT NULL COMMENT '请求参数', `time` bigint(20) NOT NULL COMMENT '执行时长(毫秒)', `ip` varchar(64) DEFAULT NULL COMMENT 'IP地址', `create_date` datetiR_180_11845@e DEFAULT NULL COMMENT '创建时间', PRIMary KEY (`id`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=66720 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIc;
创建Spring Boot项目,网上很多教程,这里不再赘述。@H_489_1@
MyBatis-Plus本来是集成了代码生成器的,但是在3.0.3以后的版本移除了对应的依赖,需要我们手动添加相关的依赖:@H_489_1@
<!--就不需要手动引入mybatis --> <dependency> <groupId>com.baomidou</groupId> <artifactId>@H_891_9@mybatis-plus</artifactId> <version>3.3.2</version> </dependency> <!--@H_168_164@mybatisplus 代码生成器--> <dependency> <groupId>com.baomidou</groupId> <artifactId>@H_891_9@mybatis-plus-generator</artifactId> <version>3.3.2</version> </dependency>
添加模板引擎:@H_489_1@
<!-- 模板引擎 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.1.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.1.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>5.1.5.RELEASE</version> </dependency> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity</artifactId> <version>1.7</version> </dependency>
全部依赖如下:@H_489_1@
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLscheR_180_11845@a-instance" xsi:scheR_180_11845@aLOCATIOn="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <@H_146_172@modelVersion>4.0.0</@H_146_172@modelVersion> <groupId>com.gaspipn.app</groupId> <artifactId>Generator</artifactId> <version>1.0-SNAPSHOT</version> <!--<name>GeneratorCommon</name> <description>GeneratorCommon</description>--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.0.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporTing.outputEncoding>UTF-8</project.reporTing.outputEncoding> <java.version>1.8</java.version> <@H_146_172@mybatisplus.spring.boot.version>1.0.5</@H_146_172@mybatisplus.spring.boot.version> <@H_146_172@mybatisplus.version>2.2.0</@H_146_172@mybatisplus.version> <@H_146_172@mysql.version>8.0.11</@H_146_172@mysql.version> <@H_146_172@mssql.version>4.0</@H_146_172@mssql.version> <Oracle.version>11.2.0.3</Oracle.version> <druid.version>1.1.10</druid.version> <quartz.version>2.3.0</quartz.version> <commons.lang.version>2.6</commons.lang.version> <commons.fileupload.version>1.2.2</commons.fileupload.version> <commons.io.version>2.5</commons.io.version> <commons.codec.version>1.10</commons.codec.version> <commons.configuration.version>1.10</commons.configuration.version> <shiro.version>1.4.0</shiro.version> <jwt.version>0.7.0</jwt.version> <kaptcha.version>0.0.9</kaptcha.version> <qiniu.version>[7.2.0, 7.2.99]</qiniu.version> <aliyun.oss.version>2.8.3</aliyun.oss.version> <qcloud.cos.version>4.4</qcloud.cos.version> <swagger.version>2.7.0</swagger.version> <joda.time.version>2.9.9</joda.time.version> <fastjson.version>1.2.47</fastjson.version> <hutool.version>4.1.1</hutool.version> <!--wagon plugin 配置--> <service-path>/work/renren</service-path> <pack-name>${project.artifactID}-${project.version}.jar</pack-name> <remote-addr>localhost:22</remote-addr> <remote-username>root</remote-username> <remote-passwd>123456</remote-passwd> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.1.14.RELEASE</version> </dependency> <!-- 模板引擎 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.1.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.1.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>5.1.5.RELEASE</version> </dependency> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity</artifactId> <version>1.7</version> </dependency> <!--就不需要手动引入mybatis --> <dependency> <groupId>com.baomidou</groupId> <artifactId>@H_891_9@mybatis-plus</artifactId> <version>3.3.2</version> </dependency> <!--@H_168_164@mybatisplus 代码生成器--> <dependency> <groupId>com.baomidou</groupId> <artifactId>@H_891_9@mybatis-plus-generator</artifactId> <version>3.3.2</version> </dependency> <!-- mysql依赖 --> <dependency> <groupId>@H_891_9@mysql</groupId> <artifactId>@H_891_9@mysql-connector-java</artifactId> <version>5.1.45</version> </dependency> <!-- 连接池和fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.31</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.51</version> </dependency> <!-- lombok模型 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.20</version> </dependency> <!--slf4j--> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.6.1</version> </dependency> <!-- swagger --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.10.5</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.10.5</version> </dependency> <dependency> <groupId>io.swagger</groupId> <artifactId>swagger-Annotations</artifactId> <version>1.5.24</version> </dependency> <dependency> <groupId>io.swagger</groupId> <artifactId>swagger-models</artifactId> <version>1.5.24</version> </dependency> <!--PostgreSql数据库--> <dependency> <groupId>org.POSTGResql</groupId> <artifactId>POSTGResql</artifactId> </dependency> </dependencies> </project>
代码里面的注释已经很全面,就不再进行代码的详细解析了,如下:@H_489_1@
package com.johan.generator; import com.baomidou.mybatisplus.Annotation.DbType; import com.baomidou.mybatisplus.generator.AutoGenerator; import com.baomidou.mybatisplus.generator.InjectionConfig; import com.baomidou.mybatisplus.generator.config.*; import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert; import com.baomidou.mybatisplus.generator.config.po.TableInfo; import com.baomidou.mybatisplus.generator.config.rules.DbcolumnType; import com.baomidou.mybatisplus.generator.config.rules.IcolumnType; import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @author JohanChan * @ProjectName Generator * @Description MySQL/POSTGRe 生成演示 * @time 2021/7/7 16:49 */ public class GeneratorCommon { /** * <p> Mr.Chen * MySQL/POSTGRe 生成演示 * </p> */ //获取 项目绝对路径 private static String canonicalPath = ""; public static void main(String[] args) { //获取项目路径 try { canonicalPath = new File("").getCanonicalPath(); } catch (Exception E) { e.printStackTrace(); } System.out.println("canonicalPath=" + canonicalPath); // String filePath = canonicalPath+"\mybatisPlusGer\src\main\"; String filePath = canonicalPath + "\src\main\"; AutoGenerator mpg = new AutoGenerator(); // 选择 freemarker 引擎,默认 Veloctiy //@H_168_164@mpg.setTemplateENGIne(new FreemarkerTemplateENGIne()); // 全局配置 GlobalConfig gc = new GlobalConfig(); gc.setAuthor("Johan");//作者名 gc.setSwagger2(true); //实体属性 Swagger2 注解 gc.setOutputDir(filePath + "java");//代码生成路径 gc.setFiLeoverride(true);// 是否覆盖同名文件,默认是false gc.setActiveRecord(true);// 不需要ActiveRecord特性的请改为false gc.setEnableCache(false);// XML 二级缓存 gc.setBaseResultMap(true);// XML ResultMap gc.setBasecolumnList(false);// XML columList gc.setOpen(false);//生成后打开文件夹 /* 自定义文件命名,注意 %s 会自动填充表实体属性! */ gc.setControllerName("%sController"); gc.setservicename("%sservice"); gc.setserviceImplName("%sserviceImpl"); gc.setMapperName("%smapper"); gc.setXmlName("%smapper"); mpg.setGlobalConfig(gc); // 数据源配置 DatasourceConfig dsc = new DatasourceConfig(); //指定数据库类型,DbType中有对应的枚举类型,pom文件中要添加对应的数据库引用 // dsc.setDbType(DbType.MYSQL);//@H_168_164@mySQL数据库 dsc.setDbType(DbType.POSTGRE_SQL);//POSTGRe数据库 dsc.setTypeConvert(new MySqlTypeConvert() { // 自定义数据库表字段类型转换【可选】 @Override public IcolumnType processTypeConvert(GlobalConfig gc, String fieldTypE) { System.out.println("转换类型:" + fieldTypE); // 注意!!processTypeConvert 存在默认类型转换,如果不是你要的效果请自定义返回、非如下直接返回。 //默认会把日期类型 转为LocaldatetiR_180_11845@e ,在查询的时候会报错,这里改为Date String t = fieldType.toLowerCase(); if (t.contains("date") || t.contains("time") || t.contains("year")) { return DbcolumnType.DATE; } else { return super.processTypeConvert(gc, fieldTypE); } } }); //数据库连接配置 /*dsc.setDriverName("com.mysql.jdbc.Driver"); // dsc.setDriverName("com.mysql.cj.jdbc.Driver"); //mysql8.0使用 dsc.setUsername("slsl_techdev"); dsc.setpassword("30Sdev*!#@"); dsc.setUrl("jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8");*/ //POSTGRe数据库连接 dsc.setDriverName("org.POSTGResql.Driver"); dsc.setUsername("POSTGRes"); dsc.setpassword("123456"); dsc.setUrl("jdbc:POSTGResql://47.101.132.225:5432/sjz_db?characterEncoding=utf8"); mpg.setDatasource(dsc); // 策略配置 StrategyConfig strategy = new StrategyConfig(); //strategy.setCapitalmode(true);// 全局大写命名 OracLE 注意 //strategy.setTablePrefix("tb_");// 此处可以修改为您的表前缀 strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略 strategy.setcolumnNaming(NamingStrategy.underline_to_camel);//采用驼峰映射 strategy.setEntityLombokmodel(true);//【实体】是否为lombok模型(默认 false) strategy.seTinclude(new String[]{"node","zy"}); // 需要生成的表.如果需要生成所有的, 注释掉此行就可以 // strategy.setExclude(new String[]{"test"}); // 排除生成的表 // 自定义实体父类 // strategy.setSuperEntityClass("com.baomidou.demo.TestEntity"); // 自定义实体,公共字段 // strategy.setSuperEntitycolumns(new String[] { "test_id", "age" }); // 自定义 mapper 父类 // strategy.setSuperMapperClass("com.baomidou.demo.TestMapper"); // 自定义 service 父类 // strategy.setSuperserviceClass("com.baomidou.demo.Testservice"); // 自定义 service 实现类父类 // strategy.setSuperserviceImplClass("com.baomidou.demo.TestserviceImpl"); // 自定义 controller 父类 // strategy.setSuperControllerClass("com.baomidou.demo.TESTController"); // 【实体】是否生成字段常量(默认 false) // public static final String ID = "test_id"; // strategy.setEntitycolumnConstant(true); // 【实体】是否为构建者模型(默认 false) // public User setName(String Name) {this.name = name; return this;} // strategy.setEntityBuilderModel(true); mpg.setStrategy(strategy); // 包配置 PackageConfig pc = new PackageConfig(); pc.setParent("com.johan.generator.manage.modules");// 自定义包路径 pc.setController("controller");// 这里是控制器包名,默认 web pc.setMapper("mapper");// 设置Mapper包名,默认mapper pc.setservice("service");// 设置service包名,默认service pc.setEntity("model.entity");// 设置Entity包名,默认entity,继承的父类 已序列化 pc.setXml("mapper.xml");// 设置Mapper XML包名,默认mapper.xml mpg.setPackageInfo(pc); // 注入自定义配置,可以在 VM 中使用 cfg.abc 设置的值 InjectionConfig cfg = new InjectionConfig() { @Override public void initMap() { Map<String, Object> map = new HashMap<String, Object>(); map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp"); this.setMap(map); } }; // 调整 xml 生成目录演示 List<FiLeoutConfig> focList = new ArrayList<>(); focList.add(new FiLeoutConfig("/templates/mapper.xml.vm") { @Override public String outputFile(TableInfo tableInfo) { return filePath + "\resources\mapper\xml\" + tableInfo.getEntityName() + "Mapper.xml"; } }); cfg.setFiLeoutConfigList(focList); mpg.setCfg(cfg); // 注入自定义配置,可以在 VM 中使用 cfg.abc 【可无】 // InjectionConfig cfg = new InjectionConfig() { // @Override // public void initMap() { // Map<String, Object> map = new HashMap<String, Object>(); // map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp"); // this.setMap(map); // } // }; // // // 自定义 xxList.jsp 生成 // List<FiLeoutConfig> focList = new ArrayList<>(); // focList.add(new FiLeoutConfig("/template/list.jsp.vm") { // @Override // public String outputFile(TableInfo tableInfo) { // // 自定义输入文件名称 // return "D://@H_168_164@my_" + tableInfo.getEntityName() + ".jsp"; // } // }); // cfg.setFiLeoutConfigList(focList); // mpg.setCfg(cfg); // // // 调整 xml 生成目录演示 // focList.add(new FiLeoutConfig("/templates/mapper.xml.vm") { // @Override // public String outputFile(TableInfo tableInfo) { // return "/develop/code/xml/" + tableInfo.getEntityName() + ".xml"; // } // }); // cfg.setFiLeoutConfigList(focList); // mpg.setCfg(cfg); // // // 关闭默认 xml 生成,调整生成 至 根目录 // TemplateConfig tc = new TemplateConfig(); // tc.setXml(null); // mpg.setTemplate(tc); // 自定义模板配置,可以 copy 源码 mybatis-plus/src/main/resources/templates 下面内容修改, // 放置自己项目的 src/main/resources/templates 目录下, 默认名称一下可以不配置,也可以自定义模板名称 // TemplateConfig tc = new TemplateConfig(); // tc.setController("..."); // tc.setEntity("..."); // tc.setMapper("..."); // tc.setXml("..."); // tc.setservice("..."); // tc.setserviceImpl("..."); // 如上任何一个模块如果设置 空 OR Null 将不生成该模块。 // mpg.setTemplate(tc); // 执行生成 mpg.execute(); } }
@H_489_1@
直接启动系统运行,运行结束后发现相关代码已经生成,如图:@H_489_1@
@H_489_1@
以上是大佬教程为你收集整理的Spring Boot整合MybatisPlus逆向工程(MySQL/PostgreSQL)全部内容,希望文章能够帮你解决Spring Boot整合MybatisPlus逆向工程(MySQL/PostgreSQL)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。