背景
我们最近几年开始使用 MyBatis-Plus,因为与 MyBatis 相比,MyBatis-Plus 更加契合国内开发者的需求,尤其是在简化代码和提升开发效率方面表现出色。这使得我们在实际使用中体验到了显著的优势,团队对此都非常认可,甚至可以说对它爱不释手。
然而,MyBatis-Plus 自带的代码生成器在配置使用上相对繁琐,为了解决这一问题,我们在 SDKG 插件中新增了 MyBatis-Plus 代码生成功能。与此同时,我们还顺带实现了 MyBatis-Plus-Join 代码的自动生成,进一步简化了开发流程,使整个项目的开发效率得到了显著提升。
MyBatis-Plus 的确广受欢迎。我们的 SDKG 插件在 GitHub 上开源已有近 10 年之久,期间一直未引起太多关注。然而,自从我们增加了 MyBatis-Plus 代码生成功能后,竟然有开发者主动在项目中留下了 issue,建议我们编写一份使用手册。这一变化让我们感到有些意外,也证明了 MyBatis-Plus 在开发者社区中的强大吸引力。
其实,MyBatis-Plus 代码生成功能只是我们顺手加上的,并不是 SDKG 插件的核心功能。我们之所以加入它,只是因为觉得它非常实用,能够帮助开发者更轻松地完成代码生成。至于 SDKG 插件本身,我们后续会继续进行优化和改进,但我们后续并没有打算推广它,也不会在任何地方做宣传。我们的初衷就是让有需要的开发者自然而然地发现并使用它。
之前我们写过一篇基于h2数据库使用mybatis-generator-maven-plugin生成代码的文章,感兴趣的读者可以点击链接查看:在此基础上我们稍加修改,完成了本篇文章
1.环境准备
版本 | |
---|---|
JDK | 17.0.6 |
Maven | Maven 3.5.3 |
2.使用快嘉mbpg脚手架生成一个新项目
脚手架声明: com.fastjrun.archetype:mbg-archetype:1.6 脚手架参数:
- groupId:pom坐标
- artifactId:pom坐标,这个值同时会影响到工程下pom.xml中的artifactId、sqlFile、该工程下的sql文件名。
- version:pom坐标
- package:生成代码包名前缀 选择合适的参数,在任一目录下执行脚手架命令(可参考如下示例命令,示例命令会在当前执行目录生成一个mbpgdemo文件夹)
mvn archetype:generate -U -B -DgroupId=com.fastjrun.share -DartifactId=mbpgdemo -Dpackage="com.fastjrun.share.mbpgdemo" \
-Dversion=1.0-SNAPSHOT -DarchetypeGroupId=com.fastjrun.archetype -DarchetypeArtifactId=mbpg-archetype -DarchetypeVersion=1.6 -U
mbpgdemo目录下文件组织结构
├── README.md
├── mbpgdemo.sql
└── pom.xml
=======================================================================
3.生成代码
新打开一个终端窗口后,进入 mbgdemo 目录,执行 mvn generate-sources
命令,即可在 src/main/java 目录下 MyBatis-Plus 相关的 entity、mapper、service 和 serviceImpl 代码。为了避免在后续使用中与已有代码发生冲突,我们对生成的 service 和 serviceImpl 类进行了重命名,分别对应为 dao 和 DaoImpl,确保命名更加符合项目的整体设计规范。
注意: pom.xml 中 将属性mpgc.skip设置为false,这样可以确保每次执行 mvn generate-sources 命令时,都会重新生成代码。
生成代码后,mbpgdemo目录下文件组织结构
├── README.md
├── mbpgdemo.sql
├── pom.xml
└── src
└── main
└── java
└── com
└── fastjrun
└── share
└── mbpgdemo
├── dao
│ ├── UserDao.java
│ ├── UserLoginDao.java
│ └── impl
│ ├── UserDaoImpl.java
│ └── UserLoginDaoImpl.java
├── entity
│ ├── User.java
│ └── UserLogin.java
└── mapper
├── UserLoginMapper.java
├── UserMapper.java
└── mapping
├── UserLoginMapper.xml
└── UserMapper.xml
4.定制
4.1 工程GAV和包名
有两种方法如下:
1、 直接在使用嘉mbpg脚手架的时候指定groupid和package,在pom.xml中会生成相应的gav和包名 2、 工程生成好后,修改pom.xml中的gav和package
4.2 定制工程sql文件
修改sql内容为满足mysql规范的sql即可,目前也只支持mysql。
4.3 其他
示例项目主要是用来适配snowy3.0框架的,所以只支持jdk17。如果希望支持jdk其他版本,如jdk8,也可以稍加修改以做适配,这里就不赘述了。