简介
MyBatis-Plus CodeGenerator 代码自动生成器,可以根据使用者的配置,去数据库中根据每一个数据表自动生成对应的 Controller、Service、ServiceImpl、Mapper、Entity 等繁琐且没有技术含量的事情,提高开发效率。
本博客项目源码地址:
1. 导入依赖
<!--引入mybatis-plus代码生成器依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.1</version>
</dependency>
<!--模板引擎-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.0</version>
</dependency>
<!-- 数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
2. 编写生成工具
这里需按自己实际情况修改
DB_URL 数据库连接地址
USERNAME 数据库账号
PASSWORD 数据库密码
DRIVER_NAME 数据库驱动名,8.0+版本的mysql驱动如:com.mysql.cj.jdbc.Driver
TABLE_NAME 输入要生成的表名
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import java.util.ArrayList;
import java.util.List;
/**
*
* 配置参考 : https://baomidou.com/guide/generator.html
*
* @author: qiDing
* date: 2020/6/4 0004 14:56
* description: TODO
*/
public class GlobalConfigs {
/**
* 数据库地址
*/
private static final String DB_URL="jdbc:mysql://192.168.41.128:3306/mind_links_core?useUnicode=true&useSSL=false&characterEncoding=utf8&useTimezone=true&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true&useServerPrepStmts=true&allowMultiQueries=true";
/**
* db 账号
*/
private static final String USERNAME = "root";
/**
* db 密码
*/
private static final String PASSWORD = "123456";
/**
* db 驱动
*/
private static final String DRIVER_NAME = "com.mysql.cj.jdbc.Driver";
/**
* 存放路径,包路径
*/
private static final String PACKAGE = "com.example.mybatis_generation";
/**
* 需要生成的数据库表名,数组,可多个
*/
private static final String[] TABLE_NAME = {"json_data"};
public static void main(String[] args) {
boolean fileOverride = false;
GlobalConfig config = new GlobalConfig();
String path = System.getProperty("user.dir");
config.setActiveRecord(true)
.setAuthor("qiDing")
.setOutputDir(path+"\\src\\main\\java\\")
.setBaseResultMap(true)
.setBaseColumnList(true)
.setFileOverride(fileOverride);
//****************************** resource ***************************************
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setDbType(DbType.MYSQL)
.setUrl(DB_URL)
.setUsername(USERNAME)
.setPassword(PASSWORD)
.setDriverName(DRIVER_NAME)
.setTypeConvert(new MySqlTypeConvert() {
@Override
public DbColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) {
System.out.println("转换类型:" + fieldType);
//tinyint转换成Boolean
if (fieldType.toLowerCase().contains("tinyint")) {
return DbColumnType.BOOLEAN;
}
if (fieldType.toLowerCase().contains("datetime")) {
return DbColumnType.DATE;
}
return (DbColumnType) super.processTypeConvert(globalConfig, fieldType);
}
});
//****************************** Policy configuration ******************************************************
List<TableFill> tableFillList = new ArrayList<>();
tableFillList.add(new TableFill("gmt_modified", FieldFill.INSERT_UPDATE));
tableFillList.add(new TableFill("modifier_id", FieldFill.INSERT_UPDATE));
tableFillList.add(new TableFill("creator_id", FieldFill.INSERT));
tableFillList.add(new TableFill("gmt_create", FieldFill.INSERT));
tableFillList.add(new TableFill("available_flag", FieldFill.INSERT));
tableFillList.add(new TableFill("deleted_flag", FieldFill.INSERT));
tableFillList.add(new TableFill("sync_flag", FieldFill.INSERT));
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig
.setCapitalMode(true)
.setEntityLombokModel(true)
.setNaming(NamingStrategy.underline_to_camel)
.setTableFillList(tableFillList)
.setInclude(TABLE_NAME);
new AutoGenerator().setGlobalConfig(config)
.setDataSource(dataSourceConfig)
.setStrategy(strategyConfig)
.setPackageInfo(
new PackageConfig()
.setParent(PACKAGE)
.setController("controller")
.setEntity("domain")
.setMapper("dao")
.setXml("dao")
)
.setTemplate(
new TemplateConfig()
.setServiceImpl("templates/serviceImpl.java")
)
.execute();
}
}
3. 代码生成
配置好后直接运行main方法即可
最终效果如下:
4. 源码地址
- Springboot开发脚手架,集合各种常用框架使用案例,完善的文档,致力于让开发者快速搭建基础环境并让应用跑起来。
- 项目源码国内gitee地址
- 项目源码github地址