当前位置: 首页 > news >正文

JAVA-SSM学习10 MyBatisPlus-代码生成器

目覚めはじめたとまどいも,なんだか悪くない

代码生成器

将MyBatisPlus所需的实体类以及服务层、控制层、数据处理层等相关类分为模板、数据库相关配置、开发者自定义配置

其中

模板:把同一类型的类相同的部分提取出来作为模板,由MyBatisPlus提供
数据库相关配置:与数据库相关的属性,通过读取数据库获取信息
开发者自定义配置:例如注解相关等,需要开发者自己手工配置

代码生成器依赖如下,这里一定要注意版本,否则会出现类引用的问题:

<dependencyManagement><dependencies><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-bom</artifactId><version>3.5.16</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>
<dependencies><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.3</version></dependency>
</dependencies>

最基本的代码:

public class CodeGenerator {public static void main(String[] args) {AutoGenerator autoGenerator = new AutoGenerator();autoGenerator.execute();}
}

这样直接执行的话会出现错误,因为我们没有配置最基本的数据库连接
image

使用setDataSource方法和DataSourceConfig类封装数据库连接信息,添加数据库连接配置

public class CodeGenerator {public static void main(String[] args) {AutoGenerator autoGenerator = new AutoGenerator();DataSourceConfig dsc = new DataSourceConfig();dsc.setUrl("jdbc:mysql://localhost:3306/dbtest2");dsc.setDriverName("com.mysql.cj.jdbc.Driver");dsc.setUsername("root");dsc.setPassword("123456");autoGenerator.setDataSource(dsc);autoGenerator.execute();}
}

此时自动弹出了新生成的文件夹,这是代码生成器给我们生成的模板,但是均为空白,而且生成的位置不符合我们的要求
image

进一步添加要求,使用setGlobalConfig方法和GlobalConfig类封装全局配置信息,添加全局配置

public class CodeGenerator {public static void main(String[] args) {AutoGenerator autoGenerator = new AutoGenerator();DataSourceConfig dsc = new DataSourceConfig();dsc.setUrl("jdbc:mysql://localhost:3306/dbtest2");dsc.setDriverName("com.mysql.cj.jdbc.Driver");dsc.setUsername("root");dsc.setPassword("123456");autoGenerator.setDataSource(dsc);autoGenerator.execute();// 全局配置GlobalConfig gc = new GlobalConfig();gc.setOutputDir(System.getProperty("user.dir") + "/src/main/java"); //设置代码生成的目标目录gc.setOpen(false); //设置完毕后是否打开目录gc.setAuthor("tcswuzb"); //设置作者gc.setFileOverride(true); //设置是否覆盖原文件gc.setMapperName("%sDao"); //设置数据层接口,%s为占位符,指代模板名gc.setIdType(IdType.ASSIGN_ID); //设置Id生成策略autoGenerator.setGlobalConfig(gc);}
}

初始目录如下:
image
执行后生成如下:
image

使用setPackageInfo方法和PackageConfig类封装包名信息,添加包名设置

public class CodeGenerator {public static void main(String[] args) {AutoGenerator autoGenerator = new AutoGenerator();DataSourceConfig dsc = new DataSourceConfig();dsc.setUrl("jdbc:mysql://localhost:3306/dbtest2");dsc.setDriverName("com.mysql.cj.jdbc.Driver");dsc.setUsername("root");dsc.setPassword("123456");autoGenerator.setDataSource(dsc);// 全局配置GlobalConfig gc = new GlobalConfig();gc.setOutputDir(System.getProperty("user.dir") + "/src/main/java"); //设置代码生成的目标目录gc.setOpen(false); //设置完毕后是否打开目录gc.setAuthor("tcswuzb"); //设置作者gc.setFileOverride(true); //设置是否覆盖原文件gc.setMapperName("%sDao"); //设置数据层接口,%s为占位符,指代模板名gc.setIdType(IdType.ASSIGN_ID); //设置Id生成策略autoGenerator.setGlobalConfig(gc);// 包配置PackageConfig pc = new PackageConfig();pc.setParent("org.example"); //设置存放包名pc.setEntity("pojo"); // 设置数据实体类包名pc.setMapper("Dao"); // 设置数据处理层包名autoGenerator.setPackageInfo(pc);autoGenerator.execute();}
}

生成效果如下:
image

最后,使用setStrategy方法和StrategyConfig类封装策略信息,添加策略设置

public class CodeGenerator {public static void main(String[] args) {AutoGenerator autoGenerator = new AutoGenerator();DataSourceConfig dsc = new DataSourceConfig();dsc.setUrl("jdbc:mysql://localhost:3306/dbtest2");dsc.setDriverName("com.mysql.cj.jdbc.Driver");dsc.setUsername("root");dsc.setPassword("123456");autoGenerator.setDataSource(dsc);// 全局配置GlobalConfig gc = new GlobalConfig();gc.setOutputDir(System.getProperty("user.dir") + "/src/main/java"); //设置代码生成的目标目录gc.setOpen(false); //设置完毕后是否打开目录gc.setAuthor("tcswuzb"); //设置作者gc.setFileOverride(true); //设置是否覆盖原文件gc.setMapperName("%sDao"); //设置数据层接口,%s为占位符,指代模板名gc.setIdType(IdType.ASSIGN_ID); //设置Id生成策略autoGenerator.setGlobalConfig(gc);// 包配置PackageConfig pc = new PackageConfig();pc.setParent("org.example"); //设置存放包名pc.setEntity("pojo"); // 设置数据实体类包名pc.setMapper("Dao"); // 设置数据处理层包名autoGenerator.setPackageInfo(pc);// 策略配置StrategyConfig strategy = new StrategyConfig();strategy.setInclude("emptest"); //设置参与生成的表名strategy.setRestControllerStyle(true); //是否启用Rest风格strategy.setVersionFieldName("version"); //设置乐观锁属性名称strategy.setLogicDeleteFieldName("deleted"); //设置删除字段逻辑名称strategy.setEntityLombokModel(true); //是否启用Lombok注解autoGenerator.setStrategy(strategy);autoGenerator.execute();}
}

生成效果如下:
image

http://www.jsqmd.com/news/652651/

相关文章:

  • 2026年新疆旅游团电话查询推荐:官方咨询与特色线路 - 品牌推荐
  • js总结知识点
  • 从零到一:手把手教你用OpenIPC工具链交叉编译GK7205V200内核(含.config文件解析)
  • Nuke Survival Toolkit:从生存到精通的150个专业特效插件解决方案
  • Golang怎么实现配置校验_Golang如何在启动时检查必填配置项是否缺失【技巧】
  • 2026年新疆旅游团电话查询推荐:五大优质旅行社联系方式汇总 - 品牌推荐
  • HTML5中Vuex持久化插件中WebStorage的底层配置
  • 终极GoTrue安全实践指南:保护JWT令牌与用户认证的完整方案
  • 如何高效降AI?实测3大降AI率神器,附Deepseek深度润色指令
  • 终极指南:Vibe Kanban系统维护与升级的完整操作手册
  • 解锁Windows驱动管理:DriverStore Explorer五分钟上手
  • PHP跨平台部署AI应用_Docker容器化方案【教程】
  • 如何用AI技术将单张图片转换为专业PSD分层文件:Layerdivider完全指南
  • PyTorch数据加载踩坑实录:Dataset里__getitem__返回字典到底行不行?
  • 2026年新疆旅游团电话查询推荐:精选推荐与使用指南 - 品牌推荐
  • CodeceptJS性能优化实战:10个技巧大幅减少测试执行时间
  • Google-10000-English无脏话版本:适合教育场景的纯净词库终极指南
  • 2026年了,谁还在手搓本科毕业论文啊??
  • supervisor篇---后台程序监控
  • react-native-svg-charts部署与发布完全指南:从开发到上线的完整流程
  • 《我的世界》Python编程实战:从零搭建你的自动化游戏世界
  • mysql如何测试用户权限是否生效_使用不同用户身份验证操作
  • PHP final关键字怎么用?
  • SAP过账期间管理避坑指南:FI、MM、AA、CO模块如何协同与冲突解决
  • CANN Meetup 北京站|本周六赴约!
  • 【SLAM导航实战解析】- 基于已知地图的AMCL定位与move_base路径规划
  • 如何快速掌握Unity AI与路径规划:800+开源项目中的终极实现指南
  • 如何实现@vue/composition-api与TypeScript的完美集成:提升类型安全和开发体验的完整指南
  • 一、组合逻辑设计实战——从波形图到上板验证的多路选择器
  • Quant-UX文件格式深度解析:理解JSON结构实现自定义导入导出