mark CodeGenerator
基础权限开发框架 BMS = Spring boot + Mybatis plus + Shiro
package com.xj.admin;import java.io.BufferedInputStream;import java.io.FileInputStream;import java.io.InputStream;import java.util.HashMap;import java.util.Map;import java.util.Properties;import com.baomidou.mybatisplus.generator.AutoGenerator;import com.baomidou.mybatisplus.generator.InjectionConfig;import com.baomidou.mybatisplus.generator.config.DataSourceConfig;import com.baomidou.mybatisplus.generator.config.GlobalConfig;import com.baomidou.mybatisplus.generator.config.PackageConfig;import com.baomidou.mybatisplus.generator.config.StrategyConfig;import com.baomidou.mybatisplus.generator.config.TemplateConfig;import com.baomidou.mybatisplus.generator.config.rules.DbType;import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;/*** <p>* 代码生成器演示* </p>*/public class CodeGenerator {public static void main(String[] args) {AutoGenerator mpg = new AutoGenerator();// 全局配置GlobalConfig gc = new GlobalConfig();gc.setOutputDir("D://");gc.setFileOverride(true);gc.setActiveRecord(true);gc.setEnableCache(true);// XML 二级缓存gc.setBaseResultMap(true);// XML ResultMapgc.setBaseColumnList(false);// XML columListgc.setAuthor("xj");// 自定义文件命名,注意 %s 会自动填充表实体属性!// gc.setMapperName("%sDao");// gc.setXmlName("%sDao");// gc.setServiceName("MP%sService");// gc.setServiceImplName("%sServiceDiy");// gc.setControllerName("%sAction");mpg.setGlobalConfig(gc);// 数据源配置DataSourceConfig dsc = new DataSourceConfig();dsc.setDbType(DbType.MYSQL);dsc.setDriverName(readValue("spring.datasource.driver-class-name"));dsc.setUsername(readValue("spring.datasource.username"));dsc.setPassword(readValue("spring.datasource.password"));dsc.setUrl(readValue("spring.datasource.url"));mpg.setDataSource(dsc);// 策略配置StrategyConfig strategy = new StrategyConfig();//strategy.setTablePrefix("bmd_");// 此处可以修改为您的表前缀strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略strategy.setInclude(new String[] { "tb_dict" }); // 需要生成的表// strategy.setExclude(new String[]{"test"}); // 排除生成的表// 字段名生成策略strategy.setDbColumnUnderline(true);// 自定义实体父类// strategy.setSuperEntityClass("com.baomidou.demo.TestEntity");// 自定义实体,公共字段// strategy.setSuperEntityColumns(new String[] { "test_id", "age" });// 自定义 mapper 父类// strategy.setSuperMapperClass("com.baomidou.demo.TestMapper");// 自定义 service 父类// strategy.setSuperServiceClass("com.baomidou.demo.TestService");// 自定义 service 实现类父类// strategy.setSuperServiceImplClass("com.baomidou.demo.TestServiceImpl");// 自定义 controller 父类// strategy.setSuperControllerClass("com.baomidou.demo.TestController");// 【实体】是否生成字段常量(默认 false)// public static final String ID = "test_id";// strategy.setEntityColumnConstant(true);// 【实体】是否为构建者模型(默认 false)// public User setName(String name) {this.name = name; return this;}// strategy.setEntityBuliderModel(true);mpg.setStrategy(strategy);// 包配置PackageConfig pc = new PackageConfig();pc.setParent("com.xj.common.bussiness");pc.setModuleName("dict");mpg.setPackageInfo(pc);// 注入自定义配置,可以在 VM 中使用 cfg.abc 设置的值InjectionConfig cfg = new InjectionConfig() {@Overridepublic void initMap() {Map<String, Object> map = new HashMap<String, Object>();map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp");this.setMap(map);}};mpg.setCfg(cfg);// 自定义模板配置,可以 copy 源码 mybatis-plus/src/main/resources/template 下面内容修改,// 放置自己项目的 src/main/resources/template 目录下, 默认名称一下可以不配置,也可以自定义模板名称TemplateConfig tc = new TemplateConfig();tc.setController("/template/controller.vm");// tc.setEntity("...");// tc.setMapper("...");// tc.setXml("...");// tc.setService("...");// tc.setServiceImpl("...");mpg.setTemplate(tc);// 执行生成mpg.execute();// 打印注入设置System.err.println(mpg.getCfg().getMap().get("abc"));}//根据key读取valuepublic static String readValue(String key) {String filePath =CodeGenerator.class.getClassLoader().getResource("application.properties").getPath();Properties props = new Properties();try {InputStream in = new BufferedInputStream (new FileInputStream(filePath));props.load(in);String value = props.getProperty (key);System.out.println(key+value);return value;} catch (Exception e) {e.printStackTrace();return null;}}}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗