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

大型网站开发基本流程wordpress记录用户搜索

大型网站开发基本流程,wordpress记录用户搜索,app搭建开发,怎样推广小程序平台下面是一些常用的转换库#xff1a; Dozer 该项目目前不活跃#xff0c;并且很可能在未来被弃用。 ModelMapper 一个智能对象映射库#xff0c;可自动将对象相互映射。它采用基于约定的方法#xff0c;同时提供简单、重构安全的应用程序接口#xff08;API#xff09;来…下面是一些常用的转换库 Dozer 该项目目前不活跃并且很可能在未来被弃用。 ModelMapper 一个智能对象映射库可自动将对象相互映射。它采用基于约定的方法同时提供简单、重构安全的应用程序接口API来处理特定用例。 MapStruct 它是一个代码生成器它基于约定优于配置的方法极大地简化了 Java Bean 类型之间的映射实现。生成的映射代码使用简单的方法调用因此执行速度快、类型安全且易于理解。 Orika 是一个 Java Bean 映射框架它除其他功能外可以递归地将数据从一个对象复制到另一个对象。它在开发多层应用程序时非常有用。 Selma 它一方面是一个注解处理器能够在编译时生成处理字段到字段映射的 Java 代码另一方面它是一个运行时库用于实例化和调用生成的映射器。 ModelMapper的使用。 dependencygroupIdorg.modelmapper/groupIdartifactIdmodelmapper/artifactIdversion3.2.1/version /dependency 在Spring环境下建议配置如下的Bean以方便我们进行转换。 Configuration public class ModelMapperConfig {Beanpublic ModelMapper modelMapper() {return new ModelMapper() ;} } 如果你不是在Spring环境那么你可以在使用的时候直接new创建即可。 2.2 准备实体类DTO 订单实体类 public class Order {private String orderNumber ;private double orderAmount ;private double tax ;private Customer customer ;private Address shippingAddress ;// getter and setter } public class Customer {private String userId ;private String firstName ;private String lastName ;private String email ;// getter and setter } public class Address {private String addressLine1 ;private String street ;private String city ;private String postalCode ;// getter and setter } 下面是我们希望进行转换的DTO对象。 public class OrderDto { public String orderNumber ;private double orderAmount ;private double tax ; private Customer customer ;private Address shippingAddress ;// getters and setters } 接下来我们将围绕上面定义的类进行讲解。 再写个静态的Service Service public class OrderService {public Order queryOrder() {Order order new Order() ;order.setOrderAmount(266.6D) ;order.setTax(1.5D) ;order.setOrderNumber(PACK-00001) ;Customer customer new Customer(U00001, Pack, AKF, 66666qq.com) ; order.setCustomer(customer) ;Address address new Address(XJ0001, HTYJ, WLMQ, 830000) ;order.setShippingAddress(address) ;return order ;} } 该Service用来模拟查询Order对象。 2.3 定义门面Facade 在本示例中我将使用 Facade 层来简化服务层如下定义 Component public class OrderFacade {private final ModelMapper modelMapper;public OrderFacade(ModelMapper modelMapper) {this.modelMapper modelMapper ;}public OrderDto convert(Order order) {return convertToOrderDto(order) ;}private OrderDto convertToOrderDto(Order order) {OrderDto orderDto this.modelMapper.map(order, OrderDto.class);return orderDto;} } 该Facade非常简单就是调用ModelMapper方法进行数据类型的转换。 2.4 定义Controller RestController RequestMapping(/orders) public class OrderController {private final OrderFacade orderFacade;private final OrderService orderService ;public OrderController(OrderFacade orderFacade, OrderService orderService) {this.orderFacade orderFacade;this.orderService orderService ;}GetMapping(value /{id})public ResponseEntityOrderDto getOrder(PathVariable(id) String id) {Order order this.orderService.queryOrder() ;OrderDto orderDto this.orderFacade.convert(order) ;return ResponseEntity.status(HttpStatus.OK.value()).body(orderDto) ;} } 3. ModelMapper更多用法 3.1 自定义映射 首先修改DTO属性如下 public class OrderDto {public String number;// ... } 这里我们希望的是number字段能对应到Order中的orderNumber属性是否能自动匹配呢执行如下代码 OrderDto dto mapper.map(order, OrderDto.class) ; System.out.println(dto) ; 输出结果 OrderDto2 [numberPACK-00001, orderAmount266.6, tax1.5, ...] 能够正确的映射。但是如果两个字段完全没有相似会如何呢修改DTO如下 public class OrderDto2 {private double money ;// ... } 我们期望的是该money对应到Order中的orderAmount上运行上面代码 OrderDto2 [numberPACK-00001, money0.0,...]在这种完全没有相似的情况下就需要我们自定义映射 ModelMapper mapper new ModelMapper() ; mapper.typeMap(Order.class, OrderDto.class).addMappings(mapping - {mapping.map(src - src.getOrderAmount(), OrderDto::setMoney) ; }) ; 这里添加了Order到OrderDto转换的映射将Order中的orderAmount映射到OrderDto中的money。 我们继续修改OrderDto添加如下属性: 我们希望将Customer中的firstName映射到这里的name可以如下添加映射  public class OrderDto {private String name ;// ... } 我们希望将Customer中的firstName映射到这里的name可以如下添加映射 typeMap.addMapping(order - order.getCustomer().getFirstName(), OrderDto::setName ) ; 这就告知在映射时将Customer中的firstName映射到DTO的name属性上。 3.2 跳过属性 如果你希望某些属性不进行映射你可以如下操作 typeMap.addMappings(mapping - mapping.skip(OrderDto::setTax));映射时将忽略DTO中的tax属性。 3.3 属性值转换 转换器允许在映射源属性到目标属性时进行自定义转换如下示例 ConverterString, String toUpperCase ctx - ctx.getSource() null ? null : ctx.getSource().toUpperCase() ; typeMap.addMappings(mapping - mapping.using(toUpperCase).map(Order::getOrderNumber, OrderDto::setNumber) ) ; 如上我们将Order中的orderNumber值转换为大写后映射到DTO的number属性。 3.4 条件映射 目标属性的映射可以有条件地进行方法是在映射的同时提供一个条件如下示例 ConditionString, String condition ctx - !Pack-00001.equals(ctx.getSource()); typeMap.addMappings(mapping - mapping.when(condition).map(Order::getOrderNumber, OrderDto2::setNumber)) ; 这里添加条件只有Order中的orderNumber属性值不为 Pack-00001时才进行映射。
http://www.w-s-a.com/news/520058/

相关文章:

  • 云服务器安装win系统做网站wordpress边栏扩大尺寸
  • 网站开发面试自我介绍软件下载网站如何建设
  • 可以做翻译任务的网站陕西省建设厅八大员证
  • 昆明 网站推广重庆网页优化seo公司
  • 网站排名下降怎么上去设计一套app页面多少钱
  • 专门用来查找网址的网站查公司名字是否被注册
  • 自己创建网站教程河南省建设厅官方网站李学军
  • 一个网站需要多少容量怎样免费设计网站建设
  • 建设工程交易中心网站12306的网站是哪个公司做的
  • 建设网站经营范围自己给公司做网站
  • 河北省住房建设厅政务网站网络营销推广的岗位职责有哪些
  • 上海网站建设优化价格孝义做网站的公司
  • 哪个公司网站做的最好义乌 网站 制作
  • 百度站长工具综合查询wordpress 上传pdf
  • 旅游短租公寓网站建设深圳龙岗招聘网
  • 做海淘是在哪个网站网络查控系统设计方案
  • o2o网站建设代理商微信公众号开发文档
  • 网站设计课程总结关于网站备案的公告
  • 网站建设与运营意义到哪查找网站域名
  • 网站及单位网站建设情况眉县住房和城市建设局网站
  • 网站是否能够被恶意镜像wordpress占用
  • 经典设计网站网站等保测评怎么做
  • 重庆做网站公司贴吧廊坊公司快速建站
  • 海外贸易在什么网站做怎么排名到百度第一页
  • 线上注册公司是在哪个网站做高仿网站
  • 网站构架图网上推广平台哪个好
  • 公司网站首页图片素材vi设计的目的和意义
  • 网站的需求分析都有哪些内容济南营销型网站建设团队
  • 怎么选择优秀的网站建设公司生鲜网站开发
  • 如何编写网站建设销售的心得网站的权限管理怎么做