Java中使用MapStruct实现对象转换时使用@Mapping的expression表达式实现自定义转换规则(多对一、获取当前Date)

这篇具有很好参考价值的文章主要介绍了Java中使用MapStruct实现对象转换时使用@Mapping的expression表达式实现自定义转换规则(多对一、获取当前Date)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

场景

Java中使用MapStruct实现对象转换/实体属性赋值/Bean属性映射,避免大量setter和getter:

Java中使用MapStruct实现对象转换/实体属性赋值/Bean属性映射,避免大量setter和getter_霸道流氓气质的博客-CSDN博客

上面介绍了mapstruct的简单使用,某些场景下需要自定义转换规则,比如记录时间字段默认获取

当前时间、某个属性需要根据两个属性的判定关系转换。

注:

博客:
霸道流氓气质的博客_CSDN博客-C#,架构之路,SpringBoot领域博主

实现

1、这是可以通过@Mapping的expression来进行设置。

比如设置某个字段为获取当前时间。

@Mapping(target = "recordTime",expression = "java(new java.util.Date())")

注意这里的new Date,必须是全路径的,不能直接写new Date()

2、如果逻辑较复杂,需要对转换前的实体的多个属性进行逻辑判断,甚至可以

在expression中写明执行某个函数,将实体类作为参数传递。

@Mapping(target = "lastLoginTime",expression = "java(DriverNoLoginConvert.getLastLoginTime(busMailList))")

这里转换接口类就叫DriverNoLoginConvert,然后getLastLoginTime是其静态方法,方法实现如下

    static Date  getLastLoginTime(BusMailList busMailList){
        return null == busMailList.getBindingTime()?busMailList.getUpdateTime():busMailList.getBindingTime();
    }

这里的转换规则就是,实体的bindingTime不为空,则用该字段进行转换,如果为空,则用updateTime字段

进行转换。

3、完整的转换接口类实例文章来源地址https://www.toymoban.com/news/detail-624408.html

import com.ruoyi.common.core.domain.basicinfomanage.BusMailList;
import com.ruoyi.common.core.domain.reportmanagement.BusDriverNoLoginRecord;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;

import java.util.Date;

@Mapper
public interface DriverNoLoginConvert {
    DriverNoLoginConvert INSTANCE = Mappers.getMapper(DriverNoLoginConvert.class);

    @Mappings({
            @Mapping(source = "carNumber",target = "carNum"),
            @Mapping(source = "driverNumber",target = "lastLoginNumber"),
            @Mapping(target = "id",ignore = true),
            @Mapping(target = "lastLoginTime",expression = "java(DriverNoLoginConvert.getLastLoginTime(busMailList))"),
            @Mapping(target = "recordTime",expression = "java(new java.util.Date())")
    })
    BusDriverNoLoginRecord mailList2NoLoginRecord(BusMailList busMailList);

    static Date  getLastLoginTime(BusMailList busMailList){
        return null == busMailList.getBindingTime()?busMailList.getUpdateTime():busMailList.getBindingTime();
    }
}

到了这里,关于Java中使用MapStruct实现对象转换时使用@Mapping的expression表达式实现自定义转换规则(多对一、获取当前Date)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MyBatis实现 Java 对象和数据库中日期类型之间的转换(超详细)

    数据库存储的时间字段的类型是datetime Java实体类的时间字段类型是Date 需求:响应前端的时间字段格式为”yyyy-MM-dd HH:mm:ss“ 1、定义resultMap 定义 Java 对象和数据库表字段的对应关系,在 mapper.xml 文件中使用 #{属性名,jdbcType=数据库字段类型} 来进行参数传递和结果集映射,例如

    2024年02月15日
    浏览(35)
  • java 对象list使用stream根据某一个属性转换成map的几种方式

    可以使用Java 8中的Stream API将List转换为Map,并根据某个属性作为键或值。以下是一些示例代码: 在这个示例中,将Person对象列表转换为Map,其中键为Person对象的name属性,值为Person对象本身。 在这个示例中,将Person对象列表转换为Map,其中键为Person对象本身,值为Person对象的

    2024年02月13日
    浏览(42)
  • java如何将对象转换为map?如何将map转换为对象?

    目录 1、使用 BeanUtils 2、ObjectMapper 3、Gson 4、Jackson 5、手动进行转换 1、使用 BeanUtils         BeanUtils 是 Apache Commons BeanUtils 项目提供的一个常用的工具类库,该工具类库提供了一系列很有用的方法,包括将 Bean 转换成 Map 对象、将 Map 对象转换成 Bean 以及获取 Bean 的属性值等

    2024年02月07日
    浏览(30)
  • Java对象类型的转换+instanceOf判断对象类型

    将子类的实例对象定义为父类类型,这种称为 向上转型 ;将父类的实例对象定义为子类类型,这种称为 向下转型 ,向下转型必须使用 显示转换 ,否则编译器会报错。           instanceof操作符,可以用来判断是否一个类实现了某个接口,也可以用来判断一个实例对象是否

    2024年02月08日
    浏览(36)
  • 4. 对象映射 - Mapping.Mapster

    在项目中我们会经常遇到对象的映射,比如像Model和Dto之间的映射,或者是对象的深拷贝,这些都是需要我们自己实现的。此时,项目中会出现很多初始化对象的代码,这些代码写起来相当的枯燥乏味,那么有没有什么办法减轻我们的工作量,使得我们可以把时间花费到业务

    2024年02月04日
    浏览(44)
  • JAVA 对象转换为JSON

    转载:如何把java对象转换为json java对象怎么转成json_clghxq的技术博客_51CTO博客 1、Java对象列表转换为JSON对象数组,并转为字符串 JSONArray jsonArray = JSONArray.fromObject(list); String jsonArrayStr = jsonArray.toString(); 2、把Java对象转换成JSON对象,并转化为字符串 JSONObject jsonObject = JSONObject.

    2024年02月10日
    浏览(27)
  • Java入门-java对象与json之间的转换

    使用jackson实现java对象转为Json字符串 引入依赖 对象转json字符串 测试 使用Jackson对象完成转换工作。 json字符串转换对象 测试

    2024年02月22日
    浏览(37)
  • Java中父子对象的相互转换问题

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 继承关系使一个子类继承父类的特征,并且附加一些新特征。子类是它父亲的特殊化,每个子类的实例也是它父亲的实例,但反过来不成立,因此,子类对象和父类对象在一定条件下也能相互转换,这种

    2024年04月26日
    浏览(20)
  • MySQL表结构转换为ES索引Mapping

    日常开发过程中肯定会存在MySQL表数据迁移至ES的情况,以canal为例,数据迁移时需要提前在ES中创建索引Mapping,但是如果碰到字段特别的表时,创建Mapping将是一件耗费心神的事情。为了解决这些重复工作,我使用Python编写了一个脚本,自动将MySQL中的表结构同步到ES中,本脚

    2024年02月03日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包