Springboot实战:Mybatis-Plus 代码生成器(附git源码)一键生成XML、实体、service、controller
Mybatis-Plus 代码生成器,一键生成XML、实体、service、controller
简介
MyBatis-Plus CodeGenerator 代码自动生成器,可以根据使用者的配置,去数据库中根据每一个数据表自动生成对应的 Controller、Service、ServiceImpl、Mapper、Entity 等繁琐且没有技术含量的事情,提高开发效率。
本博客项目源码地址:
- 项目源码github地址
- 项目源码国内gitee地址
1. 导入依赖
<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地址