SpringBoot 代码自动生成

本文介绍了如何在SpringBoot项目中添加相关依赖并配置代码生成类,通过运行程序,可以在指定目录下自动生成com文件夹,展示代码生成的成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建Spring项目
一.在项目pom.xml文件中添加相关依赖:

<dependency>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
   <version>1.18.12</version>
</dependency>

<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>8.0.19</version>
</dependency>

<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>druid</artifactId>
   <version>1.1.21</version>
</dependency>

<dependency>
   <groupId>com.baomidou</groupId>
   <artifactId>mybatis-plus-boot-starter</artifactId>
   <version>3.3.0</version>
</dependency>

<dependency>
   <groupId>com.baomidou</groupId>
   <artifactId>mybatis-plus-generator</artifactId>
   <version>3.3.0</version>
</dependency>

<dependency>
   <groupId>org.apache.velocity</groupId>
   <artifactId>velocity-engine-core</artifactId>
   <version>2.2</version>
</dependency>

在这里插入图片描述
二.创建代码生成配置类

package com.example.demo;
import com.baomidou.mybatisplus.annotation.FieldFill;
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.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import java.util.*;

@SpringBootApplication
public class DemoApplication {
	public static int scanner() {
		Scanner scanner = new Scanner(System.in);
		StringBuilder h = new StringBuilder();
		h.append("!!代码生成,输入0表示使用Velocity引擎!!");
		h.append("\n对照表");
		h.append("\n0= Velocity 引擎");
		h.append("\n1 = Freemarker 引擎");
		h.append("\n请输入");
		System.out.println(h.toString());
		int slt = 0;
		//现在有输入数据
		if(scanner.hasNext()){
			String ipt = scanner.next();
			if("1".equals(ipt)){
				slt=1;
			}
		}
		return slt;
	}
	public static void main(String[] args) {
		int result =scanner();
		//自定义需要填充的字段
		List<TableFill> tableFillList = new ArrayList<TableFill>();
		tableFillList.add(new TableFill("create_user", FieldFill.INSERT));
		tableFillList.add(new TableFill("update_user",FieldFill.UPDATE));
		tableFillList.add(new TableFill("create_time",FieldFill.INSERT));
		tableFillList.add(new TableFill("update_time",FieldFill.UPDATE));

		//代码生成器
		AutoGenerator mpg = new AutoGenerator().setGlobalConfig(
				new GlobalConfig()
					.setOutputDir("D:\\") //输出目录
					.setFileOverride(true) //是否覆盖文件
					.setActiveRecord(true) //开启activeRecord模式
					.setEnableCache(false) //xml 二级缓存
					.setBaseResultMap(true) //xml resultMap
					.setBaseColumnList(true) //xml columList
					.setMapperName("%sMapper")
					.setXmlName("%sMapper")
					.setServiceName("%sService")
					.setServiceImplName("%sServiceImpl")
					.setControllerName("%sController")

		).setDataSource(
				new DataSourceConfig()
						.setDriverName("com.mysql.cj.jdbc.Driver")
						.setUsername("root")
						.setPassword("123456")

						.setUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&serverTimezone=UTC")
		).setPackageInfo(
				new PackageConfig()
					.setModuleName("config")
					.setParent("com.example.demo.sys")
					.setController("controller")
		).setCfg(
				new InjectionConfig() {
					@Override
					public void initMap() {
						Map<String,Object> map = new HashMap<>();
						map.put("abc",this.getConfig().getGlobalConfig().getAuthor()+"-mp");
						this.setMap(map);

					}
				}.setFileOutConfigList(Collections.<FileOutConfig>singletonList(new FileOutConfig(
						"/templates/mapper.xml" + ((1 == result) ? ".ftl" : ".vm")) {
					@Override
					public String outputFile(TableInfo tableInfo) {
						return "D:/mapping/" + tableInfo.getEntityName() + "Mapper.xml";

					}
				}))


		).setTemplate(
				new TemplateConfig().setXml(null)
		);
		StrategyConfig strategyConfig= new StrategyConfig();
		strategyConfig
				.setEntityLombokModel(true)
				.setTablePrefix("sys_")
				.setNaming(NamingStrategy.underline_to_camel)
				.setInclude("sys_config")
				.setSuperEntityClass("com.common.platform.sys.base.pojo.BaseEntity")
				.setSuperEntityColumns("create_time","update_time","create_user","update_user")
				.setSuperControllerClass("com.common.platform.sys.base.controller.BaseController");
		mpg.setStrategy(strategyConfig);
		//执行生成
		if(1 == result){
			mpg.setTemplateEngine(new FreemarkerTemplateEngine());
		}
		mpg.execute();

		System.out.println(mpg.getCfg().getMap().get("abc"));

	}

}

运行程序后在自定义文件夹下出现com文件夹,打开后如图所示
在这里插入图片描述
表示程序运行成功!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值