基于sql文件生成mybatis-plus代码实践

原创
2024/08/25 20:21
阅读数 269

背景

我们最近几年开始使用 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,也可以稍加修改以做适配,这里就不赘述了。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部