按照官网上实例尝试了一下,感觉MyBatis plus中代码生成器还是很强大的,以下是测试的总结:
使用MybatisPlus的主要依赖
引入plus依赖(苞米豆)
<dependency
>
<groupId
>com
.baomidou
</groupId
>
<artifactId
>mybatis
-plus
-boot
-starter
</artifactId
>
<version
>3.1.1</version
>
</dependency
>
生成器依赖
<dependency
>
<groupId
>com
.baomidou
</groupId
>
<artifactId
>mybatis
-plus
-generator
</artifactId
>
<version
>3.1.1</version
>
</dependency
>
模板依赖
<dependency
>
<groupId
>org
.freemarker
</groupId
>
<artifactId
>freemarker
</artifactId
>
<version
>2.3.28</version
>
</dependency
>
测试的pom依赖(也有我测试别东西的依赖,多余的请忽略)
<?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
>
<parent
>
<groupId
>org
.springframework
.boot
</groupId
>
<artifactId
>spring
-boot
-starter
-parent
</artifactId
>
<version
>2.1.5.RELEASE</version
>
<relativePath
/> <!-- lookup parent
from repository
-->
</parent
>
<groupId
>com
.wy
</groupId
>
<artifactId
>testpuls
</artifactId
>
<version
>0.0.1-SNAPSHOT</version
>
<name
>testpuls
</name
>
<description
>Demo project
for Spring Boot
</description
>
<properties
>
<java
.version
>1.8</java
.version
>
</properties
>
<dependencies
>
<dependency
>
<groupId
>org
.springframework
.boot
</groupId
>
<artifactId
>spring
-boot
-starter
-web
</artifactId
>
</dependency
>
<dependency
>
<groupId
>mysql
</groupId
>
<artifactId
>mysql
-connector
-java
</artifactId
>
<scope
>runtime
</scope
>
</dependency
>
<dependency
>
<groupId
>org
.projectlombok
</groupId
>
<artifactId
>lombok
</artifactId
>
<optional
>true</optional
>
</dependency
>
<dependency
>
<groupId
>com
.baomidou
</groupId
>
<artifactId
>mybatis
-plus
-boot
-starter
</artifactId
>
<version
>3.1.1</version
>
</dependency
>
<dependency
>
<groupId
>com
.baomidou
</groupId
>
<artifactId
>mybatis
-plus
-generator
</artifactId
>
<version
>3.1.1</version
>
</dependency
>
<dependency
>
<groupId
>org
.freemarker
</groupId
>
<artifactId
>freemarker
</artifactId
>
<version
>2.3.28</version
>
</dependency
>
<dependency
>
<groupId
>org
.springframework
.boot
</groupId
>
<artifactId
>spring
-boot
-starter
-test
</artifactId
>
<scope
>test
</scope
>
</dependency
>
<dependency
>
<groupId
>junit
</groupId
>
<artifactId
>junit
</artifactId
>
<version
>4.12</version
>
<scope
>test
</scope
>
</dependency
>
<dependency
>
<groupId
>org
.springframework
</groupId
>
<artifactId
>spring
-test
</artifactId
>
<version
>5.1.7.RELEASE</version
>
<scope
>compile
</scope
>
</dependency
>
<dependency
>
<groupId
>junit
</groupId
>
<artifactId
>junit
</artifactId
>
</dependency
>
<dependency
>
<groupId
>org
.springframework
.boot
</groupId
>
<artifactId
>spring
-boot
-test
</artifactId
>
</dependency
>
<dependency
>
<groupId
>com
.capgemini
.mrchecker
</groupId
>
<artifactId
>mrchecker
-core
-module
</artifactId
>
<version
>4.12.1.1</version
>
</dependency
>
<dependency
>
<groupId
>org
.springframework
.cloud
</groupId
>
<artifactId
>spring
-cloud
-spring
-service
-connector
</artifactId
>
<version
>2.0.4.RELEASE</version
>
</dependency
>
<dependency
>
<groupId
>com
.capgemini
.mrchecker
</groupId
>
<artifactId
>mrchecker
-core
-module
</artifactId
>
<version
>4.12.1.1</version
>
</dependency
>
</dependencies
>
<build
>
<plugins
>
<plugin
>
<groupId
>org
.springframework
.boot
</groupId
>
<artifactId
>spring
-boot
-maven
-plugin
</artifactId
>
</plugin
>
</plugins
>
</build
>
</project
>
代码生成器类
package com
.wy
.testpuls
.util
;
import com
.baomidou
.mybatisplus
.core
.exceptions
.MybatisPlusException
;
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
.NamingStrategy
;
import com
.baomidou
.mybatisplus
.generator
.engine
.FreemarkerTemplateEngine
;
import java
.util
.ArrayList
;
import java
.util
.List
;
import java
.util
.Scanner
;
public class MyGenerator {
public static String
scanner(String someThing
) {
Scanner scanner
= new Scanner(System
.in);
StringBuilder help
= new StringBuilder();
help
.append("请输入" + someThing
+ ":");
System
.out
.println(help
.toString());
if (scanner
.hasNext()) {
String sc
= scanner
.next();
if (StringUtils
.isNotEmpty(sc
)) {
return sc
;
}
}
throw new MybatisPlusException("请输入正确的" + someThing
+ "!");
}
public static void main(String
[] args
) {
AutoGenerator mpg
= new AutoGenerator();
GlobalConfig gc
= new GlobalConfig();
String projectPath
= System
.getProperty("user.dir");
gc
.setOutputDir(projectPath
+ "/src/main/java");
gc
.setAuthor("山石");
gc
.setOpen(false);
mpg
.setGlobalConfig(gc
);
DataSourceConfig dsc
= new DataSourceConfig();
dsc
.setUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&useSSL=false&characterEncoding=utf8");
dsc
.setDriverName("com.mysql.jdbc.Driver");
dsc
.setUsername("root");
dsc
.setPassword("admin");
mpg
.setDataSource(dsc
);
PackageConfig pc
= new PackageConfig();
pc
.setModuleName(scanner("请输入你的包名"));
pc
.setParent("com.wy");
mpg
.setPackageInfo(pc
);
InjectionConfig cfg
= new InjectionConfig() {
@Override
public void initMap() {
}
};
String templatePath
= "/templates/mapper.xml.ftl";
List
<FileOutConfig
> focList
= new ArrayList<>();
focList
.add(new FileOutConfig(templatePath
) {
@Override
public String
outputFile(TableInfo tableInfo
) {
return projectPath
+ "/src/main/resources/mapper/" + pc
.getModuleName()
+ "/" + tableInfo
.getEntityName() + "Mapper" + StringPool
.DOT_XML;
}
});
cfg
.setFileOutConfigList(focList
);
mpg
.setCfg(cfg
);
TemplateConfig templateConfig
= new TemplateConfig();
templateConfig
.setXml(null);
mpg
.setTemplate(templateConfig
);
StrategyConfig strategy
= new StrategyConfig();
strategy
.setNaming(NamingStrategy
.underline_to_camel
);
strategy
.setColumnNaming(NamingStrategy
.underline_to_camel
);
strategy
.setEntityLombokModel(true);
strategy
.setRestControllerStyle(true);
strategy
.setInclude(scanner("表名,多个英文逗号分割").split(","));
strategy
.setSuperEntityColumns("id");
strategy
.setControllerMappingHyphenStyle(true);
strategy
.setTablePrefix(pc
.getModuleName() + "_");
mpg
.setStrategy(strategy
);
mpg
.setTemplateEngine(new FreemarkerTemplateEngine());
mpg
.execute();
}
}
注意:测试时输入的表名必须和数据库中一致,区分大小写。
疑问:生成的实体类当中没有id。求解
转载请注明原文地址: https://yun.8miu.com/read-55273.html