MapStruct实现list实体转换
1、先引⼊mapstruct的依赖如下
<!--dto转换-->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-jdk8</artifactId>
<version>1.2.0.Final</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.2.0.Final</version>
</dependency>
2、我们来了解⼀下mapstruct的⼏个常⽤的注解@Mpper注解 的componentModel属性,这个属性⽀持四个值
default: 这是默认的情况,mapstruct 不使⽤任何组件类型, 可以通过Mapper(Class)⽅式获取⾃动⽣成的实例对象。
cdi: the generated mapper is an application-scoped CDI bean and can be retrieved via @Inject
spring: ⽣成的实现类上⾯会⾃动添加⼀个@Component注解,可以通过Spring的 @Autowired⽅式进⾏注⼊
jsr330: ⽣成的实现类上会添加@javax.inject.Named 和@Singleton注解,可以通过 @Inject注解获取
3、下⾯我们写⼀个转换的demo毛线衣
先创建两个实体类UrPO,Ur
package com.spring.demo.ity;
import lombok.Data;
import java.util.Date;
@Data
public class UrPO {
private String id;
private String urNo;adults
private String urName;
private String usrPwd;
private String status;
private String loginFlg;
private Date createTm;
private Date updateTm;
}
package com.spring.demo.del;
import lombok.Data;
import java.util.Date;
/**
* @author: xizhangyan
* @date: 2021/3/5
* @desc: ⽤户信息
**/
@Data
public class Ur {
/**
* ID
*/
decreaprivate String id;
/**
* ⽤户号
*/
private String urNo;
/**
幸运儿英文
* ⽤户名称
*/
private String urName;
/**
* ⽤户密码
opinionated
*/
private String usrPwd;
/**
* 是否有效
*/
private String status;
/
**
* 是否登录
*/
private String loginFlg;
/**
* 创建时间
*/
private String createTm;
/**
* 更新时间
*/
private Date updateTm;
}
下⾯我们创建他的转换类UrCovertBasi接⼝,这⾥说⼀下我使⽤的是default的运⾏时会⾃动⽣成对应的impl,你也可以使⽤(componentModel = "spring")
当使⽤这个的时候调⽤转换类需要使⽤注解的形式@Autowired调⽤,在写List实体类转换时,⼀定要有单个的对象转换⽅法
//@Mapper(componentModel = "spring")
@Mapper
public interface UrCovertBasic {
UrCovertBasic INSTANCE = Mapper(UrCovertBasic.class);
/**you better run
纽伦
* urpo 转换成Ur
modesty
* @param urPO
* @return
*/
@Mappings({
@Mapping(target = "createTm",dateFormat = "yyyy-MM-dd")
})
Ur toCovertModel(UrPO urPO);
/**
* urpoList 转换成UrList
* @param urPOS
* @return
上衣的英文
*/
List<Ur> toCovertModels(List<UrPO> urPOS);
}
下⾯是使⽤的地⽅assignable
@Override
public Ur getUrById(String id) {
UrPO urPo = urPOMapper.lectByPrimaryKey(id);
return CovertModel(urPo);
}
over