目录
前言
工欲善其事必先利其器,今天我们介绍的主角是旨在 简化开发 的 mybatis-plus
一、mybatis-plus 是什么?
MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
现阶段后端主流开发与持久层交互部分会使用 mybatis,然而 mybatis 是由国外组织开发维护的。于是,一款由国人自行开发的 mybatis 增强框架 mybatis-plus 应运而生。
限于篇幅,mp 的功能我就不赘述了,不太了解的同学可以先行移步 mp 官网
二、代码生成工具
相信使用过 mybatis 的同学对 mybatis 逆向工程肯定不陌生
数据库 ---- dao 层 ---- service 层 ---- controller 层 架构的本质是对数据的 CRUD ,重新组合计算后以新的数据格式返回,mybatis 逆向工程可以快速生成对数据库的 CRUD 操作的代码,那么作为 mybatis 增强框架,自然也少不了这一强大的功能。
mybatis-plus-generator
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>${lastest-version}</version>
</dependency>
1 GlobalConfig
全局配置,包括文件生成目录,是否支持 swagger2,ActiveRecord AR 模式,生成文件名等
2 DataSourceConfig
数据库配置,配置数据库的连接信息
3 PackageConfig
包相关配置,配置包名
4 StrategyConfig
策略配置,如表前缀,是否驼峰命名
5 TemplateConfig
模板配置,配置代码生成基于的模板
6 InjectionConfig
抽象的对外接口,可以传一些环境变量
详情配置见 mp代码生成器配置
至此已经可以完成代码的自动生成了
三、MAVEN 插件开发
"There are only two hard things in Computer Science: cache invalidation and naming things" - Phil Karlton
计算科学中最难的两件事是命名和缓存失效
虽然说开发习惯和命名方式因人而异,但是一旦确定下通用的模板后,复用程度应该还是挺高的。
以之前的方式,每次新来一个项目,都需要复制生成代码,修改配置文件,略显繁琐。有没有更简便的方式呢?为了代码的复(tou) 用(lan),我把目光投向了 maven 插件。
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>3.2</version>
<scope>provided</scope>
</dependency>
maven 插件的开发也容易上手,在写了一个 demo 后,便大概了解了整个流程,完全符合我们复用代码生成工具的需求。
直接上代码 mybatis-plus-maven-plugin
四、使用方式
1 下载安装
下载源码,打包安装到本地或 nexus 私服
mvn -Dtest.skip=true install
2 引入
<build>
<plugins>
<plugin>
<groupId>com.bruce</groupId>
<artifactId>mybatis-plus-maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<configuration>
<configurationFile>src/main/resources/mp-generator-config.yml</configurationFile>
</configuration>
</plugin>
</plugins>
</build>
3 配置文件
author: Bruce
dbType: mysql
dbUrl: "jdbc:mysql://localhost:3306/mybatis_plus?characterEncoding=utf8&serverTimezone=GMT%2B8"
dbDriverName: "com.mysql.cj.jdbc.Driver"
dbUsername: root
dbPassword: root
parentPackage: com.bruce.mp
projectName: mp-test
#prefix: demo
includes: ["demo_mybatis_test"]
#outputDir:
usevm: true```