使用dozerMapper实现类型转换 两个对象之间的类型转换
第一步
首先引入maven依赖
<dependency>
<groupId>net.sf.dozer</groupId>
<artifactId>dozer-spring</artifactId>
<version>5.5.1</version>
</dependency>
<dependency>
<groupId>net.sf.dozer</groupId>
<artifactId>dozer</artifactId>
<version>5.5.1</version>
<exclusions>
<exclusion>
<artifactId>jcl-over-slf4j</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
第二步
建立dozer配置类,如果不建立这个配置类的话,在你要用类型转换的地方,你肯定要加自动注释去引用,那时候你就会发现程序报错了,找不到这个org.dozer.mapper,因为你没有用配置类去注入他
@Configuration
public class DozerMapperConfig {
@Bean
public DozerBeanMapperFactoryBean dozerBeanMapperFactoryBean(@Value("classpath*:dozer/*.xml") Resource[] resources) {
final DozerBeanMapperFactoryBean dozerBeanMapperFactoryBean = new DozerBeanMapperFactoryBean();
dozerBeanMapperFactoryBean.setMappingFiles(resources);
return dozerBeanMapperFactoryBean;
}
}
第三步
然后新建两个类,其中有相同属性的,类如
@Data
public class User implements Serializable {
private String username;
private String password;
}
@Data
public class User2 {
private String id;
private String username;
private String password;
}
第四步
在你要用的地方,用自动注释@Autowired引入进行自动装配
@Autowired
private Mapper dozerMapper;
第五步
开始使用
@GetMapping("/query")
public User getPayment(){
User2 user2=new User2();
user2.setId("1");
user2.setUsername("username");
user2.setPassword("password");
//dozerMapper.map()方法就是讲user2中的属性值,进行深度复制,
//然后后面的User.class,就是要转换成什么样的类,然后返回这个类
User user=dozerMapper.map(user2,User.class);
return user;
}
输出结果为
{"username":"username","password":"password"}
我们可以看到类型转换成功;
以上内容如有错误,请指正,谢谢