mapstruct-plus
时间: 2023-08-17 11:11:56 浏览: 314
MapStruct-Plus是一个基于MapStruct的增强版本,它是一个Java注解处理器,用于生成类型安全的映射代码。MapStruct-Plus提供了一些额外的功能和特性,以便更方便地进行对象之间的映射。
相对于原始的MapStruct,MapStruct-Plus提供了以下一些增强功能:
1. 嵌套映射支持:MapStruct-Plus允许在对象之间进行深度嵌套映射,并且可以自动创建嵌套对象。
2. 映射策略:MapStruct-Plus允许使用自定义的映射策略来处理特定的映射场景,例如条件映射、默认值设置等。
3. 动态映射:MapStruct-Plus支持动态映射,可以根据运行时的条件来确定映射规则。
4. 枚举映射:MapStruct-Plus提供了更灵活的枚举映射支持,可以自定义枚举值之间的转换规则。
5. 集合映射:MapStruct-Plus提供了更强大的集合映射功能,支持集合类型之间的映射、元素类型转换等。
总的来说,MapStruct-Plus扩展了MapStruct的功能,使得对象之间的映射更加灵活、方便,并提供一些额外的特性来处理更复杂的映射场景。
相关问题
mapstruct plus
Mapstruct Plus是一个增强版的Mapstruct库,它为使用Mapstruct进行对象转换提供了一些额外的功能和注解。通过引入依赖后,使用Mapstruct Plus非常简单。你可以给需要转换的类添加@AutoMapMapper注解来获取Converter实例,然后调用convert方法即可完成转换。Mapstruct Plus完全兼容Mapstruct,并提供了一些附加的特性。<em>1</em><em>2</em><em>3</em>
#### 引用[.reference_title]
- *1* *2* *3* [彻底干掉 BeanUtils,最优雅的 Mapstruct 增强工具全新出炉](https://blog.csdn.net/merlin0/article/details/129352122)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item]
[ .reference_list ]
代码生成器:mybatis-plus-generator自定义模板生成 dto、vo、convertor
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文件,提高开发效率。