简洁大方网站模板,网站建设要求 优帮云,韩国互联网公司排名,怎样用一台电脑做代理 让别的电脑通过代理上几个网站DTO#xff08;Data Transfer Object#xff09;#xff1a;数据传输对象#xff0c;这个概念来源于J2EE的设计模式#xff0c;原来的目的是为了EJB的分布式应用提供粗粒度的数据实体#xff0c;以减少分布式调用的次数#xff0c;从而提高分布式调用的性能和降低网络负…DTOData Transfer Object数据传输对象这个概念来源于J2EE的设计模式原来的目的是为了EJB的分布式应用提供粗粒度的数据实体以减少分布式调用的次数从而提高分布式调用的性能和降低网络负载但在这里我泛指用于展示层与服务层之间的数据传输对象。再通俗一点来说就是前端传给后端的JSON数据其为数据库对应实体的部分字段这样做的目的也很好理解比如你在修改的接口使用的是完整实体那么你可能在前端只传了你想要的改的但是不排除其它情况的篡改比如添加了别的不能修改的字段可能就会产生问题 VOView Object视图对象用于展示层它的作用是把某个指定页面或组件的所有数据封装起来。通俗一点就是说你在后端接口处理完返回给前端的实但是VO这要前端想要的字段 POPersistent Object持久化对象它跟持久层通常是关系型数据库的数据结构形成一一对应的映射关系如果持久层是关系型数据库那么数据表中的每个字段或若干个就对应PO的一个或若干个属性。这就是VO里说的数据库完整的映射对象实体 这三个是常用的可以通过代码生成器来直接生成 转换器 转换器是用来将POVODTO 进行转换的工具直接上代码 dependencygroupIdorg.mapstruct/groupIdartifactIdmapstruct/artifactIdversion${org.mapstruct.version}/version/dependency这是MapStruct官网提供的一个工具很好用 若源对象属性与目标对象属性名字一致会自动映射对应属性不一样的需要指定也可以用 format 转成自己想要的类型也支持表达式的方式可以看到像 id、name、email这些名词一致的我并没有指定 source-target而birthday-birth指定了转换格式的 birthDateFormat 加了dateFormat 或者 birthExpressionFormat 加了 expression如果某个属性你不想映射可以加个 ignoretrue
Mapper
public interface PersonConverter {PersonConverter INSTANCE Mappers.getMapper(PersonConverter.class);Mappings({Mapping(source birthday, target birth),Mapping(source birthday, target birthDateFormat, dateFormat yyyy-MM-dd HH:mm:ss),Mapping(target birthExpressionFormat, expression java(org.apache.commons.lang3.time.DateFormatUtils.format(person.getBirthday(),\yyyy-MM-dd HH:mm:ss\))),Mapping(source user.age, target age),Mapping(target email, ignore true)})PersonDTO domain2dto(Person person);Person gerPerson(PersonDTO personDTO);ListPersonDTO domain2dto(ListPerson people);
}然后就会在target里自动生成他的实现类 项目中直接注入转换器使用里面自己定义的方法就可以 Person person PersonConverter.INSTANCE.getPerson(personDTO);MapStruct 注解的关键词 Mapper 只有在接口加上这个注解 MapStruct 才会去实现该接口 Mapper 里有个 componentModel 属性主要是指定实现类的类型一般用到两个 default默认可以通过 Mappers.getMapper(Class) 方式获取实例对象 spring在接口的实现类上自动添加注解 Component可通过 Autowired 方式注入 Mapping属性映射若源对象属性与目标对象名字一致会自动映射对应属性 source源属性 target目标属性 dateFormatString 到 Date 日期之间相互转换通过 SimpleDateFormat该值为 SimpleDateFormat 的日期格式 ignore: 忽略这个字段 Mappings配置多个Mapping MappingTarget 用于更新已有对象 InheritConfiguration 用于继承配置
要查看完整功能可参考官网
http://mapstruct.org/documentation/stable/reference/html/