扩展说明
mbg默认只提供了最简单增删改查语句,没有提供service层、和controller层的代码、没有整合swagger、lombok等;现在就想扩充插件解决这些问题;
对一张表的常用操作
新增:
单条新增、批量新增
修改:
单条修改(通过id修改)、批量修改(通过id修改)
查询:
通过id查询、id批量查询、类似mbg的updateByPrimaryKeySelective修改方法的属性动态查询方法、唯一索引单条查询、唯一索引批量查询、外键批量查询(外键单条查询不适用)
删除:
id删除、id批量删除(删除本人习惯只想弄这两个,id批量删除中的id集合可由查询方法提供)
gitee地址: https://gitee.com/mnssnx/mbg-code
mbg-code总共写了四个插件,分别在项目中com.mlx.mbg.code.plugins包下的四个子包中;
MbgCodePlugin插件:扩展mapper层的查询语句插件;
LombokPlugin:实体类添加@Data注解;
ServicePlugin插件:扩展service和controller层代码的插件;
SwaggerPlugin插件:实体类添加swagger中的注解;
各个插件可单独使用;
本篇文章只想给一个扩展mbg的代码例子,读者最好可通过源码自己写自定插件,因为每个人编码风格都不一样,希望对您有帮助;
注意:如果没有引入mybatis的springboot的启动器,可能生成的配置文件报错
-
将gitee项目克隆到本地、用maven命令将项目安装进入本地maven仓库(ideal可用右侧maven的安装命令安装)
-
在pom文件中添加的mybatis generator插件
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.6</version>
<configuration>
<configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
<dependency>
<groupId>com.mlx</groupId>
<artifactId>mbg-code</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</plugin>
- mybatis配置文件generateConfig.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<context id="context">
<!-- 带上序列化接口 -->
<plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>
<!-- 自定义mbg插件 -->
<plugin type="com.mlx.mbg.code.plugins.core.MbgCodePlugin" />
<!-- 自定义swagger插件 -->
<plugin type="com.mlx.mbg.code.plugins.swagger.SwaggerPlugin"/>
<!-- 自定义lombok插件 -->
<plugin type="com.mlx.mbg.code.plugins.lombok.LombokPlugin"/>
<!-- 自定义service与controller插件 -->
<plugin type="com.mlx.mbg.code.plugins.service.ServicePlugin">
<property name="serviceTargetProject" value="src/main/java"/>
<property name="serviceImplTargetProject" value="src/main/java"/>
<property name="controllerTargetProject" value="src/main/java"/>
<property name="servicePackage" value="com.xz.pms.service"/>
<property name="serviceImplPackage" value="com.xz.pms.impl"/>
<property name="controllerPackage" value="com.xz.pms.controller"/>
</plugin>
<commentGenerator>
<property name="suppressDate" value="true"/>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!-- 数据库连接 -->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/pms_author?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC"
userId="root" password="root">
<property name="nullCatalogMeansCurrent" value="true"/>
</jdbcConnection>
<!-- model -->
<javaModelGenerator targetPackage="com.xz.pms.model" targetProject="src/main/java"/>
<!-- xml映射文件 -->
<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"/>
<!-- mapper接口 -->
<javaClientGenerator targetPackage="com.xz.pms.mapper" targetProject="src/main/java" type="XMLMAPPER"/>
<table tableName="bus_salary_real" domainObjectName="BusSalaryReal"
enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
enableSelectByExample="false" selectByExampleQueryId="false" >
<!-- 表联查配置:生成表联查用的sql字段标签和resultMap标签 -->
<property name="sqlBase" value="real"/>
<!-- 外键集合查询配置:有多个外键用“,”隔离 -->
<property name="foreignKeys" value="project_id,employee_id,card_id"/>
<!-- 唯一索引查询配置:多个唯一索引用“;”隔离,如果一个唯一索引由多个字段组成,字段用“,”隔离 -->
<property name="uniqueKeys" value="year,month,employee_id"/>
</table>
</context>
</generatorConfiguration>