AI智能
改变未来

手把手教你Spring Boot2.x整合Mybatis Plus 代码生成器


文末有完整代码包下载供大家参考(如果对你有帮助,请给我一些支持,帮我点个赞,谢谢!)

一、在pom.xml中添加所需依赖

<!-- MyBatis-Plus代码生成器--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.4.1</version></dependency><!--MyBatis-Plus逆向功能所需的模板引擎--><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.30</version></dependency>

二、在application.yml中添加相关配置

#----------------mybatis plus配置-----------------------mybatis-plus:# xml扫描,多个目录用逗号或者分号分隔(告诉 Mapper 所对应的 XML 文件位置)mapper-locations: classpath:mapper/*.xmlconfiguration:# 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射map-underscore-to-camel-case: true# 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段call-setters-on-nulls: true# 这个配置会将执行的sql打印出来,在开发或测试的时候可以用log-impl: org.apache.ibatis.logging.stdout.StdOutImpl# 实体扫描,多个package用逗号或者分号分隔typeAliasesPackage: com.example.study.model.entityglobal-config:db-config:#主键类型 AUTO:\"数据库ID自增\" INPUT:\"用户输入ID\",ID_WORKER:\"全局唯一ID (数字类型唯一ID)\", UUID:\"全局唯一ID UUID\";id-type: auto#字段策略 IGNORED:\"忽略判断\"  NOT_NULL:\"非 NULL 判断\")  NOT_EMPTY:\"非空判断\"field-strategy: NOT_EMPTY#数据库类型db-type: MYSQL# 逻辑删除配置# 删除前logic-not-delete-value: 1# 删除后logic-delete-value: 0# 数据库表名的前缀table-prefix: t_

三、新建代码生成工具类CodeGenerateUtils.java

package com.example.study.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;/*** mybatis-plus代码生成器** @author 154594742@qq.com* @date 2021/2/24 16:32*/public class CodeGenerateUtils {/*** 读取控制台内容*/private static String scanner(String tip) {Scanner scanner = new Scanner(System.in);StringBuilder help = new StringBuilder();help.append(\"请输入\" + tip + \":\");System.out.println(help.toString());if (scanner.hasNext()) {String ipt = scanner.next();if (StringUtils.isNotBlank(ipt)) {return ipt;}}throw new MybatisPlusException(\"请输入正确的\" + tip + \"!\");}/*** 运行这个main方法进行代码生成*/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(\"Code Duck\");gc.setOpen(false);gc.setSwagger2(true); // 实体属性 Swagger2 注解gc.setServiceName(\"%sService\");1044mpg.setGlobalConfig(gc);// 数据源配置DataSourceConfig dsc = new DataSourceConfig();dsc.setUrl(\"jdbc:mysql://localhost:3306/study?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=UTC\");dsc.setDriverName(\"com.mysql.cj.jdbc.Driver\");dsc.setUsername(\"root\");dsc.setPassword(\"123456\");mpg.setDataSource(dsc);/*包配置,可以根据自己的项目情况自定义生成后的存放路径entity默认路径为父目录.entitymapper默认路径为父目录.mapperservice默认路径为父目录.serviceserviceImpl默认路径为父目录.service.implcontroller默认路径为父目录.controller*/PackageConfig pc = new PackageConfig();pc.setModuleName(null);//设置父目录pc.setParent(\"com.example.study\");//自定义entity的生成位置pc.setEntity(\"model.entity\");mpg.setPackageInfo(pc);// 自定义配置InjectionConfig cfg = new InjectionConfig() {@Overridepublic void initMap() {// to do nothing}};// 如果模板引擎是 freemarkerString templatePath = \"/templates/mapper.xml.ftl\";// 如果模板引擎是 velocity// String templatePath = \"/templates/mapper.xml.vm\";// 自定义输出配置List<FileOutConfig> focList = new ArrayList<>();// 自定义配置会被优先输出focList.add(new FileOutConfig(templatePath) {@Overridepublic String outputFile(TableInfo tableInfo) {// 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!return projectPath + \"/src/main/resources/mapper/\"+ \"/\" + 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.setControllerMappingHyphenStyle(true);// 设置表前缀strategy.setTablePrefix(\"t_\");mpg.setStrategy(strategy);mpg.setTemplateEngine(new FreemarkerTemplateEngine());mpg.execute();}}

四、在数据库中新建一张角色表

CREATE TABLE `t_role` (`id` bigint NOT NULL AUTO_INCREMENT COMMENT \'自增主键\',`role_name` varchar(32) DEFAULT NULL COMMENT \'角色名称\',`role_description` varchar(32) DEFAULT NULL COMMENT \'角色描述\',PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=\'角色表\'

五、运行工具类中的main方法,然后输入需要逆向生成代码的数据表名然后回车,然后就可以看到代码已经成功生成了



点我下载完整代码包

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 手把手教你Spring Boot2.x整合Mybatis Plus 代码生成器