一、Mapstruct
依赖引入:id 'kotlin-kapt'
implementation "org.mapstruct:mapstruct:1.4.2.Final"
kapt("org.mapstruct:mapstruct-processor:1.4.2.Final")
1、在两个属性完全一样的bean中使用:
data class User(val studentName: String, val studentAge: String)
data class User2(val studentName: String, val studentAge: String)
@Mapper
interface IPersonMapper {
fun po2entity(userPo: User?): User2?
companion object {
val INSTANCT = Mappers.getMapper(IPersonMapper::class.java)
}
}
val user = User("张三", "18")
val user2: User2? = IPersonMapper.INSTANCT.po2entity(user)
Log.e("TAG","转换的结果为:"+user2)
运行结果为:
2、在两个属性名不一样的bean中使用
data class User(val studentName: String, val studentAge: String)
data class User2(val name: String, val studentAge: String)
@Mapper
interface IPersonMapper {
@Mapping(target = "name", source = "studentName")
fun po2entity(user: User?): User2?
companion object {
val INSTANCT = Mappers.getMapper(IPersonMapper::class.java)
}
}
val user = User("张三", "18")
val user2: User2? = IPersonMapper.INSTANCT.po2entity(user)
Log.e("TAG","转换的结果为:"+user2)
运行结果:
注意:
忽略某个字段可以使用:
@Mapping(target = "mergeFrom", ignore = true)
如果出现报错:
解决办法:添加
@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE)