代码生成器:mybatis-plus-generator自定义模板生成 dto、vo、convertor
时间: 2023-08-06 12:01:45 浏览: 179
这是一款高度自定义代码生成idea插件,目前提供的 模板是依托于mybatis-flex 代码提示、自动APT,SQL预览等特性
MyBatis-Plus是一个MyBatis的增强工具,在MyBatis的基础上进行了扩展,提供了许多实用的功能,如分页、性能分析等。而MyBatis-Plus Generator是MyBatis-Plus的代码生成器,可以根据数据库表自动生成对应的Java文件。
MyBatis-Plus Generator默认生成的Java文件包括实体类、Mapper接口、Mapper XML文件、Service接口、ServiceImpl实现类。但是,有时我们需要生成其他类型的Java文件,比如DTO、VO、Convertor等。这时候,我们可以通过自定义模板来实现。
以下是自定义模板生成DTO、VO、Convertor的步骤:
1. 修改MyBatis-Plus Generator配置文件
在MyBatis-Plus Generator配置文件中,找到table的配置项,添加以下两个配置项:
```xml
<table schema="" tableName="user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
<!-- 自定义模板路径 -->
<property name="dtoTargetPackage" value="com.example.demo.dto"/>
<property name="dtoTargetProject" value="src/main/java"/>
<property name="voTargetPackage" value="com.example.demo.vo"/>
<property name="voTargetProject" value="src/main/java"/>
<property name="convertorTargetPackage" value="com.example.demo.convertor"/>
<property name="convertorTargetProject" value="src/main/java"/>
</table>
```
其中,dtoTargetPackage、dtoTargetProject分别表示DTO类的包名和生成路径;voTargetPackage、voTargetProject分别表示VO类的包名和生成路径;convertorTargetPackage、convertorTargetProject分别表示Convertor类的包名和生成路径。
2. 编写自定义模板
在MyBatis-Plus Generator配置文件中,找到context的配置项,添加以下三个配置项:
```xml
<context id="default" targetRuntime="MyBatis3">
<!-- 自定义模板 -->
<plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" />
<plugin type="org.mybatis.generator.plugins.ToStringPlugin" />
<plugin type="com.github.chitgoksar.mybatismbplus.generator.plugins.DtoPlugin" />
<plugin type="com.github.chitgoksar.mybatismbplus.generator.plugins.VoPlugin" />
<plugin type="com.github.chitgoksar.mybatismbplus.generator.plugins.ConvertorPlugin" />
</context>
```
其中,DtoPlugin、VoPlugin、ConvertorPlugin分别表示生成DTO、VO、Convertor类的插件。
接着,创建相应的模板文件,如下:
DTO模板:
```java
package ${dtoPackage};
import lombok.Data;
@Data
public class ${dtoName} {
// TODO: 添加DTO属性
}
```
VO模板:
```java
package ${voPackage};
import lombok.Data;
@Data
public class ${voName} {
// TODO: 添加VO属性
}
```
Convertor模板:
```java
package ${convertorPackage};
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import ${entityPackage}.${entityName};
import ${dtoPackage}.${dtoName};
import ${voPackage}.${voName};
@Mapper
public interface ${convertorName} {
${convertorName} INSTANCE = Mappers.getMapper(${convertorName}.class);
${dtoName} toDto(${entityName} entity);
${entityName} toEntity(${dtoName} dto);
${voName} toVo(${entityName} entity);
}
```
其中,${dtoPackage}、${voPackage}、${convertorPackage}分别表示生成的DTO、VO、Convertor类的包名;${dtoName}、${voName}、${convertorName}、${entityName}分别表示生成的类名和实体类名。
3. 运行MyBatis-Plus Generator
在MyBatis-Plus Generator配置文件中,找到generator的配置项,运行MyBatis-Plus Generator即可生成相应的Java文件。
```xml
<generatorConfiguration>
<!-- 配置数据源 -->
<dataSource type="com.alibaba.druid.pool.DruidDataSource">
<!-- 数据库连接配置 -->
</dataSource>
<!-- 配置生成的Java文件 -->
<context id="default" targetRuntime="MyBatis3">
<!-- 自定义模板 -->
<plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" />
<plugin type="org.mybatis.generator.plugins.ToStringPlugin" />
<plugin type="com.github.chitgoksar.mybatismbplus.generator.plugins.DtoPlugin" />
<plugin type="com.github.chitgoksar.mybatismbplus.generator.plugins.VoPlugin" />
<plugin type="com.github.chitgoksar.mybatismbplus.generator.plugins.ConvertorPlugin" />
</context>
</generatorConfiguration>
```
通过以上步骤,我们可以自定义模板生成DTO、VO、Convertor等Java文件,提高开发效率。
阅读全文