当前位置: 首页 > news >正文

上海营销型网站建设费用需要哪些技术

上海营销型网站建设费用,需要哪些技术,免费设计房子的软件,写软文是什么意思老铁们是不是经常为写一些实体转换的原始代码感到头疼,尤其是实体字段特别多的时候。介绍一个开源项目 mapstruct ,可以轻松优雅的进行转换,简化你的代码。当然有的人喜欢写get set,或者用BeanUtils 进行复制,代码只是…

老铁们是不是经常为写一些实体转换的原始代码感到头疼,尤其是实体字段特别多的时候。介绍一个开源项目 mapstruct ,可以轻松优雅的进行转换,简化你的代码。当然有的人喜欢写get set,或者用BeanUtils 进行复制,代码只是工具,本文只是提供一种思路。

先贴下官网地址吧:https://mapstruct.org

一、MapStruct 的基本概念

  • 映射器(Mapper): 在 MapStruct 中,映射器是一个 Java 接口,用于指定两个 JavaBean 之间的映射。映射器通常使用注解进行注释,以指定映射器的输入类型和输出类型。映射器定义了转换的规则和逻辑。
  • 映射器工厂(MapperFactory): 映射器工厂是 MapStruct 中的核心组件之一。它负责创建映射器实例,并维护映射器的缓存。在应用程序中,通常只需要创建一个映射器工厂实例,然后使用它来创建所有的映射器。
  • 映射器配置(MapperConfig): 映射器配置是 MapStruct 中的另一个核心组件,用于指定映射器的行为和配置。在映射器配置中,可以定义类型转换器、映射器实现类和其他映射器配置选项。
  • 映射器生命周期方法(Lifecycle Methods): 映射器生命周期方法是 MapStruct 提供的一个特性,它允许在映射器实例创建和销毁时执行自定义逻辑。映射器生命周期方法可以用来进行一些初始化和清理工作。
  • 映射器选项(Mapper Options): 映射器选项是 MapStruct 提供的另一个特性,它允许在映射器级别指定一些选项和配置。映射器选项可以用来控制映射器的行为和性能。

二、MapStruct 的使用

  1. 环境搭建

在使用 MapStruct 之前,需要先配置环境。MapStruct 的最新版本可以在官网上下载。MapStruct 是一个注解处理器,因此还需要将 MapStruct 添加到 Maven 或 Gradle 项目中。

  1. 映射器定义

定义一个映射器,需要创建一个 Java 接口,并使用 @Mapper 注解注释它。在映射器接口中,可以定义多个映射方法。每个映射方法的输入类型和输出类型必须在 @Mapper 注解中进行声明。

例如,假设有两个 JavaBean,分别为 Person 和 PersonDto,它们的属性如下:

public class Person {private Long id;private String name;private int age;// getters and setters
}public class PersonDto {private Long id;private String fullName;private int age;// getters
}

假设需要将 Person 转换为 PersonDto,可以定义一个映射器如下:

@Mapper
public interface PersonMapper {PersonMapper INSTANCE = Mappers.getMapper( PersonMapper.class );@Mapping(source = "name", target = "fullName")PersonDto personToDto(Person person);
}

在上面的代码中,@Mapper 注解指定了映射器的输入类型和输出类型。PersonMapper 接口中定义了一个映射方法 personToDto,用于将 Person 对象转换为 PersonDto 对象。@Mapping 注解指定了属性之间的映射关系。

  1. 映射器工厂创建

创建一个映射器工厂,需要使用 MapStruct 提供的工厂类 Mappers。Mappers.getMapper() 方法接受一个映射器接口的 Class 对象作为参数,并返回一个映射器实例。

例如,可以使用以下代码创建 PersonMapper 实例:

PersonMapper mapper = PersonMapper.INSTANCE;
  1. 映射器使用

使用映射器进行转换,只需要调用映射器的相应方法即可。例如,可以使用以下代码将 Person 对象转换为 PersonDto 对象:

Person person = new Person();
person.setId(1L);
person.setName("John");
person.setAge(30);PersonDto personDto = mapper.personToDto(person);

在上面的代码中,创建了一个 Person 对象,并设置了它的属性值。然后调用映射器的 personToDto 方法将 Person 对象转换为 PersonDto 对象。

  1. 映射器配置

可以使用 @MapperConfig 注解定义一个映射器配置。在映射器配置中,可以定义类型转换器、映射器实现类和其他映射器配置选项。映射器配置可以在映射器接口中进行引用,从而影响映射器的行为和性能。

例如,可以定义一个映射器配置如下:

@MapperConfig
public interface MyMapperConfig {@Mappings({@Mapping(source = "address.street", target = "street"),@Mapping(source = "address.city", target = "city"),@Mapping(source = "address.country", target = "country")})PersonDto personToDto(Person person);
}

在上面的代码中,定义了一个 MyMapperConfig 配置类,它包含一个 personToDto 映射器方法。在这个方法中,使用 @Mapping 注解指定了属性之间的映射关系。

可以在映射器接口中引用这个配置类,如下所示:

@Mapper(config = MyMapperConfig.class)
public interface PersonMapper {PersonMapper INSTANCE = Mappers.getMapper( PersonMapper.class );PersonDto personToDto(Person person);
}

在上面的代码中,@Mapper 注解中使用 config 属性引用了 MyMapperConfig 配置类。

高级特性

类型转换器

MapStruct 可以自动进行基本类型和常见类型的转换,但是如果需要转换自定义类型或者复杂类型,可以使用类型转换器。

类型转换器是一个静态方法,接受一个参数并返回一个转换后的结果。例如,可以定义一个将 LocalDate 转换为 Date 的类型转换器如下:

javaCopy codepublic class DateMapper {public static Date toDate(LocalDate localDate) {return Date.from(localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());}
}

在上面的代码中,定义了一个 toDate 类型转换器,它接受一个 LocalDate 参数并返回一个转换后的 Date 对象。

然后可以在映射器接口中使用 @Mapper 的 uses 属性引用这个类型转换器,如下所示:

javaCopy code@Mapper(uses = DateMapper.class)
public interface PersonMapper {PersonDto personToDto(Person person);
}

在上面的代码中,@Mapper 注解中使用 uses 属性引用了 DateMapper 类型转换器。

注解

MapStruct 支持自定义注解,可以使用这些注解来控制映射器的行为。例如,可以定义一个 @UpperCase 注解,用于将字符串属性转换为大写。

javaCopy code@Target(ElementType.FIELD)
@Retention(RetentionPolicy.CLASS)
public @interface UpperCase {
}

在上面的代码中,定义了一个 @UpperCase 注解,它可以应用在字段上。

然后可以在映射器接口中使用 @Mapping 注解的 qualifiedBy 属性引用这个注解,如下所示:

javaCopy code@Mapper
public interface PersonMapper {@Mapping(source = "name", target = "fullName", qualifiedBy = UpperCase.class)PersonDto personToDto(Person person);
}

在上面的代码中,@Mapping 注解中使用 qualifiedBy 属性引用了 @UpperCase 注解。

最后,需要定义一个 @BeforeMapping 方法,用于在映射之前将字符串属性转换为大写,如下所示:

javaCopy code@Mapper
public interface PersonMapper {@BeforeMappingdefault void toUpperCase(@MappingTarget PersonDto personDto, @MappingSource Person person) {personDto.setFullName(personDto.getFullName().toUpperCase());}@Mapping(source = "name", target = "fullName", qualifiedBy = UpperCase.class)PersonDto personToDto(Person person);
}

在上面的代码中,定义了一个 toUpperCase 方法,在映射之前将 fullName 属性转换为大写。可以使用 @BeforeMapping 注解标记这个方法,并指定 @MappingTarget 和 @MappingSource 参数,这样 MapStruct 就可以正确地注入映射器的输入和输出对象。

http://www.yayakq.cn/news/357951/

相关文章:

  • 越秀五屏网站建设物流网页设计
  • 高端网站建设 aspx北京网络运维公司
  • 网站升级中 模版北语网站app
  • 360网站排名优化外贸是做什么的 怎么做
  • 网站建设设计文档模板下载广告设计接单app
  • 重庆网站开发服务器网页升级访问中自动跳转
  • 国内知名的wordpress网站外国的网站 ftp
  • 网站 抄袭wordpress 建战经营
  • 上海网站建设 分类广告wordpress相册插件中文
  • 南宁做网站推广的公司哪家好哈尔滨的互联网公司
  • 最流行的网站开发设计logo网站有哪些免费
  • 广西优化网站 优帮云长沙做网站最好的公司有哪些
  • 网站dns解析设置英文 网站 源码
  • 个人网站推广手段有哪些沧州市建设局网站
  • 室内设计网站模板如何加速wordpress
  • 网站 设计工具成都网站建设电话
  • 杨凌做网站网址公司网站免费建立
  • 安徽网站建设调查报告高端网站设计哪个好
  • 怎么把网站做成手机版的设计书籍频道开放说明
  • 怎么自己做网站服务器linux河南建设工程信息网官方网站
  • 做美食如何加入团购网站爱企查企业服务平台
  • 在国外做网站推广做网站公司经营范围
  • 自建站是属于什么模式做问卷赚钱的网站
  • 零基础怎么建设网站网站的建设方式有哪些
  • 网站建设违约补充协议辽宁建网站
  • 建网站 视频的网址wordpress 申请
  • 微博优惠券网站怎么做服务器网站 都被做跳转
  • 广州定制网站建设公司某网站seo诊断分析和优化方案
  • 海口网站建设呢wordpress手机发留言
  • 厦门网站建设公司怎么选泸州市往建局建设银行网站名称