ModelMapper 在 MyBatis-Plus 中如何使用?
时间: 2024-12-14 16:14:13 浏览: 10
ModelMapper 是一个流行的对象映射库,它可以让你轻松地将对象之间的数据转换,非常适合与 MyBatis-Plus 结合使用,因为它的自动化映射功能可以解决从数据库查询结果到实体类字段的自动转换问题。
在 MyBatis-Plus 中集成 ModelMapper 的步骤通常是这样的:
1. **添加依赖**:首先,在项目的 pom.xml 文件中添加 ModelMapper 和 MyBatis-Plus 的 ModelMapper 插件依赖。
```xml
<dependency>
<groupId>org.modelmapper</groupId>
<artifactId>modelmapper</artifactId>
<version>2.x.x</version>
</dependency>
<dependency>
<groupId>com.baomidou.mybatisplus.extension</groupId>
<artifactId>mybatis-plus-extension-modelmapper</artifactId>
<version>3.x.x</version>
</dependency>
```
注意替换版本号为最新的稳定版。
2. **初始化 ModelMapper**:在启动类或配置类中初始化 ModelMapper,比如使用 ModelMapperConfiguration 的静态工厂方法。
```java
@Autowired
private Environment environment;
@Configuration
public class MapperConfig {
@Bean
public ModelMapper modelMapper() {
return ModelMapper.builder()
.addMappings(getAutoMapping())
.build();
}
private Collection<ModelMapper.MappedProperty> getAutoMapping() {
// 自动映射规则,根据实际情况配置
return Arrays.asList(
new PropertyMap<>(User.class, "username", "user_name")
);
}
}
```
这里的 `getAutoMapping` 方法定义了从数据库字段到实体字段的映射规则。
3. **在 Mapper 接口中使用 ModelMapper**:在执行查询操作后,使用 ModelMapper 进行映射。
```java
List<User> users = userMapper.selectList(null);
environment.getInjector().injectMembers(modelMapper());
List<UserDto> mappedUsers = modelMapper.map(users, UserDto.class);
```
`environment.getInjector().injectMembers(modelMapper())` 这句是 ModelMapper-Plus 特有的,它会注入环境上下文,以便模型映射能够访问 MyBatis 的动态 SQL 结果。
阅读全文