Spring Boot 통합 MybatisPlus 역방향 프로젝트(MySQL/PostgreSQL)
23570 단어 SpringBootMybatisPlus역공학
1.생 성 표
우리 먼저 데이터베이스 테이블 만 들 기:syslog、sys_user
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` datetime DEFAULT NULL COMMENT ' ',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=66720 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
CREATE TABLE `sys_user` (
`id` varchar(255) NOT NULL,
`company_id` varchar(64) NOT NULL COMMENT ' ',
`office_id` varchar(64) NOT NULL COMMENT ' ',
`login_name` varchar(30) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT ' ',
`password` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT ' ',
`no` varchar(100) DEFAULT NULL COMMENT ' ',
`name` varchar(100) NOT NULL COMMENT ' ',
`email` varchar(200) DEFAULT NULL COMMENT ' ',
`phone` varchar(200) DEFAULT NULL COMMENT ' ',
`mobile` varchar(200) DEFAULT NULL COMMENT ' ',
`user_type` char(1) DEFAULT NULL COMMENT ' ',
`photo` varchar(1000) DEFAULT NULL COMMENT ' ',
`login_ip` varchar(100) DEFAULT NULL COMMENT ' IP',
`login_date` datetime DEFAULT NULL COMMENT ' ',
`login_flag` varchar(64) DEFAULT NULL COMMENT ' ',
`create_by` varchar(64) NOT NULL COMMENT ' ',
`create_time` datetime NOT NULL COMMENT ' ',
`update_by` varchar(64) NOT NULL COMMENT ' ',
`update_date` datetime NOT NULL COMMENT ' ',
`remarks` varchar(255) DEFAULT NULL COMMENT ' ',
`del_flag` char(1) NOT NULL DEFAULT '0' COMMENT ' ',
`device_alias` varchar(255) DEFAULT NULL,
`device_type` varchar(255) DEFAULT NULL,
`token` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE,
KEY `sys_user_office_id` (`office_id`) USING BTREE,
KEY `sys_user_login_name` (`login_name`) USING BTREE,
KEY `sys_user_company_id` (`company_id`) USING BTREE,
KEY `sys_user_update_date` (`update_date`) USING BTREE,
KEY `sys_user_del_flag` (`del_flag`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT=' ';
2.Spring Boot 프로젝트 만 들 기Spring Boot 프로젝트 를 만 들 고 인터넷 에 많은 튜 토리 얼 이 있 습 니 다.여 기 는 더 이상 군말 하지 않 습 니 다.
3.역방향 공사 의존 도입
MyBatis-Plus 는 코드 생 성 기 를 통합 하 였 으 나 3.0.3 이후 버 전에 서 해당 하 는 의존 도 를 제거 하 였 습 니 다.관련 의존 도 를 수 동 으로 추가 해 야 합 니 다.
<!-- mybatis -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.3.2</version>
</dependency>
<!--mybatisplus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.2</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>
모든 의존 도 는 다음 과 같 습 니 다.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</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>
<mybatisplus.spring.boot.version>1.0.5</mybatisplus.spring.boot.version>
<mybatisplus.version>2.2.0</mybatisplus.version>
<mysql.version>8.0.11</mysql.version>
<mssql.version>4.0</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>mybatis-plus</artifactId>
<version>3.3.2</version>
</dependency>
<!--mybatisplus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.2</version>
</dependency>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>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>
4.코드 에서 역방향 공사 설정 완료코드 안의 주석 은 이미 전면적 이 므 로 코드 의 상세 한 해석 을 하지 않 겠 습 니 다.다음 과 같 습 니 다.
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
//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);//MySQL
// dsc.setDbType(DbType.POSTGRE_SQL);//PostGre
dsc.setTypeConvert(new MySqlTypeConvert() {
// 【 】
@Override
public IColumnType processTypeConvert(GlobalConfig gc, String fieldType) {
System.out.println(" :" + fieldType);
// !!processTypeConvert , 、 。
// LocalDateTime , , 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("root");
dsc.setPassword("123456");
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://127.0.0.1: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://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();
}
}
테스트시스템 을 직접 시작 하여 실행 이 끝 난 후에 관련 코드 가 생 성 된 것 을 발견 합 니 다.그림:
Spring Boot 통합 MybatisPlus 역방향 프로젝트(MySQL/PostgreSQL)에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 Spring Boot MybatisPlus 역방향 프로젝트 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.