Mybatis-plus 自动生成代码
这里主要是介绍 Mybatis-plus 自动生成代码操作流程,方便以后查阅!!!
一、简介
MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
二、操作步骤
(一)Maven依赖
pom.xml 文件
<!-- 数据库驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.25</version></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.20</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- mybatis-plus --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version></dependency><!-- 代码自动生成器依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.4.1</version></dependency><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>2.2</version></dependency>
(二)代码
MybatisGenerator 类
package com.wl.cloud.mbg;import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
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.*;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;import java.util.ArrayList;
import java.util.List;/*** @author: wanglin* @date: 2023-09-12 周二* @Version: 1.0* @Description:*/
@SuppressWarnings("all")
public class MybatisGenerator {/*** 指定具体项目模块*/public static String moudleName = "cloud-mbg";public static String authorName = "wanglin";/*** 数据源信息*/public static String url = "jdbc:mysql://localhost:3306/test_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8";public static String driverName = "com.mysql.cj.jdbc.Driver";public static String username = "root";public static String password = "123456";/*** 包设置*/public static String parentPackage = "com.wl.cloud.mbg";public static String mapperPath = "/src/main/resources/mapper/";/*** 表前缀,生成实体类时,会自动去除表前缀,如:table: tb_task, class: Task*/public static String tablePrefix = "gl_";/*** 需要生成的表名,多个用逗号隔开*/public static String tables = "gl_task";public static void main(String[] args) {// 代码生成器AutoGenerator mpg = new AutoGenerator();// 全局配置GlobalConfig gc = new GlobalConfig();String projectPath = System.getProperty("user.dir");gc.setOutputDir(projectPath + "/" + moudleName + "/src/main/java");//设置代码生成路径gc.setFileOverride(true);//是否覆盖以前文件gc.setOpen(false);//是否打开生成目录gc.setAuthor(authorName);//设置项目作者名称// gc.setIdType(IdType.AUTO);//设置主键策略gc.setIdType(IdType.ASSIGN_ID);//设置主键策略gc.setBaseResultMap(true);//生成基本ResultMapgc.setBaseColumnList(true);//生成基本ColumnListgc.setServiceName("%sService");//去掉服务默认前缀gc.setDateType(DateType.ONLY_DATE);//设置时间类型mpg.setGlobalConfig(gc);// 数据源配置DataSourceConfig dsc = new DataSourceConfig();dsc.setUrl(url);dsc.setDriverName(driverName);dsc.setUsername(username);dsc.setPassword(password);mpg.setDataSource(dsc);// 包配置PackageConfig pc = new PackageConfig();pc.setParent(parentPackage);pc.setMapper("dao");pc.setEntity("domain");pc.setService("service");pc.setServiceImpl("service.impl");pc.setController("controller");mpg.setPackageInfo(pc);// 自定义配置InjectionConfig cfg = new InjectionConfig() {@Overridepublic void initMap() {// to do nothing}};// 如果模板引擎是 freemarker// String templatePath = "/templates/mapper.xml.ftl";// 如果模板引擎是 velocityString templatePath = "/templates/mapper.xml.vm";// 自定义输出配置List<FileOutConfig> focList = new ArrayList<>();// 自定义配置会被优先输出focList.add(new FileOutConfig(templatePath) {@Overridepublic String outputFile(TableInfo tableInfo) {// 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!return projectPath + "/" + moudleName + mapperPath + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;}});cfg.setFileOutConfigList(focList);mpg.setCfg(cfg);TemplateConfig templateConfig = new TemplateConfig();//控制 不生成xmltemplateConfig.setXml(null);// 配置自定义输出模板//指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别// templateConfig.setEntity("templates/entity2.java");mpg.setTemplate(templateConfig);// 策略配置StrategyConfig sc = new StrategyConfig();sc.setNaming(NamingStrategy.underline_to_camel);sc.setColumnNaming(NamingStrategy.underline_to_camel);sc.setEntityLombokModel(true);//自动lomboksc.setRestControllerStyle(true);sc.setControllerMappingHyphenStyle(true);sc.setLogicDeleteFieldName("deleted");//设置逻辑删除//设置自动填充配置TableFill gmt_create = new TableFill("create_time", FieldFill.INSERT);TableFill gmt_modified = new TableFill("update_time", FieldFill.INSERT_UPDATE);ArrayList<TableFill> tableFills = new ArrayList<>();tableFills.add(gmt_create);tableFills.add(gmt_modified);sc.setTableFillList(tableFills);//乐观锁sc.setVersionFieldName("version");sc.setRestControllerStyle(true);//驼峰命名sc.setTablePrefix(tablePrefix); //设置表名前缀sc.setInclude(tables);//表名,多个英文逗号分割mpg.setStrategy(sc);// 生成代码mpg.execute();}
}
(三)截图展示
关注林哥,持续更新哦!!!★,°:.☆( ̄▽ ̄)/$:.°★ 。