当前位置:首页 > 编程笔记 > 正文
已解决

mybatis-plus-generator自动生成代码

来自网友在路上 173873提问 提问时间:2023-10-22 23:40:28阅读次数: 73

最佳答案 问答题库738位专家为你答疑解惑

mybatis-plus-generator 自动生成代码

依赖包

	<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.0.6</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency><!--以下依赖是拓展,插件--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-extension</artifactId><version>3.0.6</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-annotation</artifactId><version>3.0.6</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-core</artifactId><version>3.0.6</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.0.6</version></dependency><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.30</version></dependency>

mybatis-plus-generator 自动生成代码

修改包名、作者、路径、jdbc配置后,运行main()方法,输入表名即可,多个表用逗号隔开

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
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.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 com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;/*** 生成数据库对应的entity, mapper, service, controller** 运行main()方法,输入表名即可,多个表用逗号隔开*/
public class MybatisResourcesGenerator {/*** 包名。自行修改*/private static final String PACKAGE = "com.example.demo";/*** 作者。自行修改*/public static final String AUTHOR = "xx";/*** 如果输出的路径不对,修改 PATH*/private static final String PATH = "";/*** jdbc配置。自行修改*/此处需要修改 数据库地址:端口/库名。private static final String JDBC_MYSQL = "jdbc:mysql://数据库地址:端口/库名?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=true&serverTimezone=Asia/Shanghai&useTimezone=true";private static final String MYSQL_JDBC_DRIVER = "com.mysql.jdbc.Driver";private static final String USER_NAME = "账号";private static final String PASSWORD = "密码";private static final String TABLE_PREFIX = "tb_";private static final String ENTITY_NAME = "Entity";private static final String ENTITY_PACKAGE = "domain";private static final String SERVICE_NAME = "Service";private static final String SERVICE_PACKAGE = "service";private static final String SERVICE_IMPL_PACKAGE = "service.impl";private static final String MAPPER_PACKAGE = "dao";private static final String RESOURCES_MAPPER_XML = "/src/main/resources/mapper/";/*** 生成数据库对应的entity, mapper, service, controller** 运行main()方法,输入表名即可,多个表用逗号隔开*/public static void main(String[] args) {// 代码生成器AutoGenerator mpg = new AutoGenerator();//获取工程根目录String projectPath = System.getProperty("user.dir");System.out.println("projectPath=" + projectPath);// 全局配置GlobalConfig gc = getGlobalConfig(projectPath);mpg.setGlobalConfig(gc);// 数据源配置DataSourceConfig dsc = getSourceConfig();mpg.setDataSource(dsc);// 包配置PackageConfig pc = getPackageConfig();mpg.setPackageInfo(pc);// 自定义配置InjectionConfig cfg = getInjectionConfig(projectPath);mpg.setCfg(cfg);mpg.setTemplate(new TemplateConfig().setXml(null));// 策略配置StrategyConfig strategy = getStrategy();mpg.setStrategy(strategy);mpg.setTemplateEngine(new FreemarkerTemplateEngine());mpg.execute();}/*** 如果输出的路径不对,修改 PATH* @param projectPath* @return*/public static GlobalConfig getGlobalConfig(String projectPath) {GlobalConfig gc = new GlobalConfig();//如果输出的路径不对,修改 PATHgc.setOutputDir(projectPath + PATH +  "/src/main/java");//作者名称gc.setAuthor(AUTHOR);gc.setOpen(false);gc.setServiceName("%s" + SERVICE_NAME);gc.setEntityName("%s" + ENTITY_NAME);gc.setIdType(IdType.ID_WORKER);gc.setDateType(DateType.ONLY_DATE);gc.setBaseColumnList(true);gc.setBaseResultMap(true);gc.setFileOverride(true);return gc;}/*** 数据源配置* @return*/public static DataSourceConfig getSourceConfig() {DataSourceConfig dsc = new DataSourceConfig();dsc.setUrl(JDBC_MYSQL);// dsc.setSchemaName("public");dsc.setDriverName(MYSQL_JDBC_DRIVER);dsc.setUsername(USER_NAME);dsc.setPassword(PASSWORD);return dsc;}/*** 包配置* @return*/public static PackageConfig getPackageConfig() {PackageConfig pc = new PackageConfig();
//        pc.setModuleName(scanner("模块名"));pc.setParent(PACKAGE);pc.setEntity(ENTITY_PACKAGE);pc.setService(SERVICE_PACKAGE);pc.setServiceImpl(SERVICE_IMPL_PACKAGE);pc.setMapper(MAPPER_PACKAGE);return pc;}/*** 自定义配置* @param projectPath* @return*/public static InjectionConfig getInjectionConfig(String projectPath) {InjectionConfig cfg = new InjectionConfig() {@Overridepublic void initMap() {// to do nothing}};List<FileOutConfig> focList = new ArrayList<>();focList.add(new FileOutConfig("/templates/mapper.xml.ftl") {@Overridepublic String outputFile(TableInfo tableInfo) {// 自定义输入文件名称return projectPath + PATH + RESOURCES_MAPPER_XML+ tableInfo.getMapperName() + StringPool.DOT_XML;}});cfg.setFileOutConfigList(focList);return cfg;}/*** 策略配置* @return*/public static StrategyConfig getStrategy() {StrategyConfig strategy = new StrategyConfig();strategy.setNaming(NamingStrategy.underline_to_camel);strategy.setColumnNaming(NamingStrategy.underline_to_camel);
//        strategy.setSuperEntityClass("com.baomidou.ant.common.BaseEntity");strategy.setEntityLombokModel(true);strategy.setRestControllerStyle(true);
//        strategy.setSuperControllerClass("com.baomidou.ant.common.BaseController");strategy.setInclude(scanner("表名"));
//        strategy.setSuperEntityColumns("id_");strategy.setControllerMappingHyphenStyle(true);strategy.setTablePrefix(TABLE_PREFIX);strategy.setLogicDeleteFieldName("is_delete");strategy.setVersionFieldName("op_version");List<TableFill> tableFillList = new ArrayList<>();tableFillList.add(new TableFill("create_time", FieldFill.INSERT));tableFillList.add(new TableFill("update_time", FieldFill.UPDATE));strategy.setTableFillList(tableFillList);return strategy;}/*** <p>* 读取控制台内容* </p>*/public static String[] scanner(String tip) {Scanner scanner = new Scanner(System.in);System.out.println("请输入" + tip + ":");if (scanner.hasNext()) {String ipt = scanner.next();if (StringUtils.isNotBlank(ipt)) {if(ipt.contains(",")) {return ipt.split(",");} else {return new String[] {ipt};}}}throw new MybatisPlusException("请输入正确的" + tip + "!");}
}
查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"mybatis-plus-generator自动生成代码":http://eshow365.cn/6-22004-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!