AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成包括 Entity、Mapper、Mapper XML、Service、Controller 数个模块的代码,可以提升开发效率.
- 首先,进入 https://start.spring.io 生成一个springboot简单项目
- 下步,数据表SQL
CREATE TABLE `soldier` (
`soldier_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '士兵编号',
`soldier_name` varchar(30) NOT NULL COMMENT '士兵名字',
`join_army_time` timestamp NOT NULL COMMENT '参军时间',
PRIMARY KEY (`soldier_id`),
KEY `sid` (`soldier_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
依赖
以下有些依赖不1定是必须的,但积累甚多,就一并贴出,
版本号是经过多次甄选的.
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-logging
org.springframework.boot
spring-boot-starter-web-services
org.springframework.boot
spring-boot-devtools
runtime
false
org.springframework.boot
spring-boot-starter-test
test
org.junit.vintage
junit-vintage-engine
org.springframework.boot
spring-boot-starter-freemarker
com.baomidou
mybatis-plus-generator
3.0.7.1
com.baomidou
mybatis-plus-boot-starter
3.1.1
org.mybatis.generator
mybatis-generator-core
1.3.7
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.1.0
org.springframework.boot
spring-boot-starter-data-jpa
com.github.vindell
spring-boot-starter-log4j2-plus
1.0.5.RELEASE
org.springframework.boot
spring-boot-starter-log4j
1.3.8.RELEASE
com.github.pagehelper
pagehelper-spring-boot-starter
1.2.5
org.springframework.session
spring-session-core
org.projectlombok
lombok
com.zaxxer
HikariCP
3.3.1
mysql
mysql-connector-java
8.0.11
org.apache.tomcat.embed
tomcat-embed-jasper
org.apache.activemq
activemq-all
5.15.9
cn.hutool
hutool-all
4.3.1
javax.servlet
javax.servlet-api
javax.servlet
jstl
配置mybatis-plus.properties文件
#此处为本项目src所在路径(代码生成器输出路径)
OutputDir=/home/gzh/eclipse-workspace/Boot-Demo/src/main/java
#mapper.xml的生成位置
OutputDirXml=/home/gzh/eclipse-workspace/Boot-Demo/src/main/resources
#数据库表名(此处切不可为空,如果为空,则默认读取数据库的所有表名)
tableName=soldier
#存放所生成代码文件的上一级包名
#className=自填
#设置作者
author=gene
#正常情况下,下面的代码无需修改
#自定义包路径
parent=cn.example.demo
#数据库地址
url=jdbc:mysql://localhost:3306/test00?serverTimezone=CTT&characterEncoding=UTF-8&useSSL=false
#mysql:username & password
userName=plh
password=1234
Java代码
注意导入的package,不要导错
package cn.example.demo.util;
import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;
import com.baomidou.mybatisplus.annotation.DbType;
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.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.FileOutConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.TemplateConfig;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
/**
*
* 代码生成器
*
*
* @author gzh
*
*/
public class MybatisPlusGenerator {
public static void main(String[] args) throws InterruptedException {
// 获取Mybatis-Plus.properties文件的配置信息
final ResourceBundle rb = ResourceBundle.getBundle("mybatis-plus");
// 代码生成器
AutoGenerator mpg = new AutoGenerator();
// 全局配置
GlobalConfig gc = new GlobalConfig();
gc.setOutputDir(rb.getString("OutputDir"));
gc.setOpen(false);
gc.setBaseResultMap(true);
gc.setBaseColumnList(true);
gc.setAuthor(rb.getString("author"));
gc.setMapperName("%sMapper");
gc.setXmlName("%sMapper");
gc.setServiceName("%sService");
gc.setServiceImplName("%sServiceImpl");
gc.setControllerName("%sController");
mpg.setGlobalConfig(gc);
// dataSource配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setDbType(DbType.MYSQL);
dsc.setUrl(rb.getString("url"));
dsc.setDriverName("com.mysql.jdbc.Driver");
dsc.setUsername(rb.getString("userName"));
dsc.setPassword(rb.getString("password"));
mpg.setDataSource(dsc);
// package配置
PackageConfig pc = new PackageConfig();
pc.setParent(rb.getString("parent"));
pc.setController("controller");
pc.setService("service");
pc.setServiceImpl("service.impl");
pc.setEntity("bean");
pc.setMapper("mapper");
mpg.setPackageInfo(pc);
// 自定义配置
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
/* ... */
}
};
// 如果模板引擎是 freemarker
String templatePath = "/templates/mapper.xml.ftl";
// 自定义输出配置
List focList = new ArrayList<>();
// 自定义配置会被优先输出
focList.add(new FileOutConfig(templatePath) {
@Override
public String outputFile(com.baomidou.mybatisplus.generator.config.po.TableInfo tableInfo) {
// 自定义输入文件名称
return rb.getString("OutputDirXml") + "/mapper/" + tableInfo.getEntityName() + 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);
strategy.setEntityLombokModel(true);
strategy.setInclude(new String[]{rb.getString("tableName")});
mpg.setStrategy(strategy);
mpg.setTemplateEngine(new FreemarkerTemplateEngine());
mpg.execute();
System.out.println("done,fresh engineering");
}
}
运行上面的main方法,便可生成 xml/bean/mapper/service/controller 计5个模块的代码.
1
- 注:lombok注解@Data要想起作用的话,还要为IDE另外安装lombok插件,具体步骤可单独搜索 ↩