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

电商平台网站开发文档php网页设计实例代码

电商平台网站开发文档,php网页设计实例代码,做网站生成二维码,如何做团购网站中的美食地处地图功能po转vo工具类 1.反射调用2.JSON序列化方式3.注解驱动4.ModelMappe5.手动映射6.总结7.扩展方法 1.反射调用 这个方法会创建一个新的实例#xff0c;并将所有公共字段复制到目标对象中#xff0c;而不修改原来的实例。因此#xff0c;如果目标类包含 private 或 final 字段并将所有公共字段复制到目标对象中而不修改原来的实例。因此如果目标类包含 private 或 final 字段则需要额外的手动处理。 1.工具类 import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException;public class PoVoConverterT, V {protected final ClassT clazz;public PoVoConverter(ClassT clazz) {this.clazz clazz;}public T voToPo(V vo) throws IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {T po clazz.newInstance();Field[] declaredFields clazz.getDeclaredFields();for (Field declaredField : declaredFields) {declaredField.setAccessible(true);Field voField vo.getClass().getDeclaredField(declaredField.getName());voField.setAccessible(true);declaredField.set(po, voField.get(vo));}return po;}public V poToVo(T po) throws IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {V vo clazz.newInstance();Field[] declaredFields clazz.getDeclaredFields();for (Field declaredField : declaredFields) {declaredField.setAccessible(true);Field poField po.getClass().getDeclaredField(declaredField.getName());poField.setAccessible(true);declaredField.set(vo, poField.get(po));}return vo;} }2.使用方式 PoVoConverterUser, UserVo converter new PoVoConverter(User.class); User user converter.voToPo(userVo); UserVo userVo converter.poToVo(user);3.总结 优势简单易懂不需要任何额外配置 劣势性能较差因为需要多次反射调用而且有可能遇到安全限制 2.JSON序列化方式 该方法使用 Jackson 库将 VO 对象转换为 JSON 字符串并将字符串反序列化回 PO 类型以此实现转换注意此方法的优点是效率较高但是可能需要管理 JSON 库的依赖关系 1.工具类 import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.type.TypeFactory;public class PoVoConverterT, V {protected final ClassT clazz;public PoVoConverter(ClassT clazz) {this.clazz clazz;}public T voToPo(V vo) throws IOException {ObjectMapper mapper new ObjectMapper();return mapper.readValue(mapper.writeValueAsString(vo), TypeFactory.defaultInstance().constructType(clazz));}public V poToVo(T po) throws IOException {ObjectMapper mapper new ObjectMapper();return mapper.readValue(mapper.writeValueAsString(po), TypeFactory.defaultInstance().constructType(clazz));} }2.使用方式 PoVoConverterUser, UserVo converter new PoVoConverter(User.class); User user converter.voToPo(userVo); UserVo userVo converter.poToVo(user);3.总结 优势高性能适用于大数据量的情况 劣势需要额外的 JSON 库支持如果 JSON 字符串过大则可能导致内存溢出 3.注解驱动 推荐使用 JSON 序列化方法因为它具有较高的性能并且易于理解和维护。如果需要更高的安全性可以考虑使用注解驱动方法 1.代码 Service MapperScan(com.andy.mapper) public interface UserMapper {Mappings({Mapping(source vo.id, target id),Mapping(source vo.name, target name),Mapping(source vo.age, target age)})User poToVo(UserVo vo);Mappings({Mapping(source id, target vo.id),Mapping(source name, target vo.name),Mapping(source age, target vo.age)})UserVo voToPo(User po); }2.总结 优势简洁明了易于维护。 劣势需要使用第三方库比如 MyBatis 4.ModelMappe 这里模型映射器会自动检测用户类和 VO 类型上的 Mapping 注解并将 VO 类型映射到 PO 类型反之亦然 1.导入坐标 dependencygroupIdorg.modelmapper/groupIdartifactIdmodelmapper/artifactIdversion3.2.0/version /dependency2.使用方式 public class UserService {private ModelMapper modelMapper new ModelMapper();public UserVo toVo(User po) {return modelMapper.map(po, UserVo.class);}public User toPo(UserVo vo) {return modelMapper.map(vo, User.class);} }3.总结 优势无须手动编写映射代码易于维护 劣势可能导致依赖冲突 5.手动映射 这种方式就是我们常用的get()和set() 1.使用方式 public T voToPo(V vo) {T po clazz.newInstance();po.setId(vo.getId());po.setName(vo.getName());po.setEmail(vo.getEmail());return po; }public V poToVo(T po) {V vo clazz.newInstance();vo.setId(po.getId());vo.setName(po.getName());vo.setEmail(po.getEmail());return vo; }3.总结 优势有更多的控制权适合特定场景 劣势代码中有大量的get/set 6.总结 方法缺点优点反射调用性能较低可能受到安全限制简单易懂适合小型项目JSON 序列化需要额外的 JSON 库支持可能产生大量垃圾信息高效适合大型项目注解驱动需要第三方库复杂度较高易于维护性能良好ModelMapper可能导致冲突无须手动编写映射代码易于维护手动映射手动编写映射代码更多控制权 7.扩展方法 1.BeanUtils.copyProperties(); 2.UserVo userVo JSON.parseObject(JSON.toJSONString(user), UserVo.class);
http://www.w-s-a.com/news/825055/

相关文章:

  • 专题网站可以做什么怎么做网站滑动图片部分h5
  • 什么是网站建设外包html 门户网站
  • 资阳市建设局网站微信开发公司
  • wap建站程序源码可不可以异地建设网站
  • 优秀企业网站的特点网站标签名词
  • 建材网站建设案例淄博网站建设培训
  • 纯代码添加wordpress网站底部导航宝塔自助建站源码
  • 网站设计技术有哪些?青岛网站建设工作室
  • 网站怎样建设才叫人性化宣传
  • 济南网站制作方案做淘客网站备案
  • h5企业网站只做做php门户网站那个系统好
  • 长春阿凡达网站建设建网站如果不买域名别人能不能访问
  • 佛山网站建设策划东莞建设工程交易网
  • 制作公众号网站开发濮阳建网站
  • 屏南网站建设兼职旅游网站建设方案两百字
  • 最牛的网站建设网站建设的规模设想
  • 马云之前做的网站企业形象策划
  • ie9网站后台编辑器代发qq群发广告推广
  • 百度怎样建立一个网站嘉兴高端网站定制
  • 国外设计网站怎么进入电子网站建设前台设计
  • 中方建设局网站济南网站建设公司电子商务网站
  • 如何做网站编辑 沒技术济南企业做网站推广网站
  • 网站模板 百科北京中高风险地区最新名单最新
  • 高校网站建设前言做公众号的公司是什么公司
  • 网站备案怎么登陆短视频培训学校
  • 百度图片点击变网站是怎么做的北京市建设工程质量监督站网站
  • 在线建站模板重庆网站建设大概需要多少钱
  • 建设网站公司电话号码wordpress 即时通讯
  • 网站设计用的技术拓者吧室内设计网app
  • 河北seo优化_网络建设营销_网站推广服务 - 河北邢台seo网站建设运行情况报告