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

网站代备案系统网站策划制作

网站代备案系统,网站策划制作,黄冈网站免费投放平台免费下载,建筑培训机构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/733050/

相关文章:

  • 云南建设学院的网站划分切片来做网站
  • 建设视频网站需要什么知识辽阳建设网站
  • 提供o2o网站建设打扑克网站推广软件
  • 制作简单门户网站步骤中国建设局网站查询
  • 漳州专业网站建设网站建设的面试要求
  • 有哪些网站是封面型汕头网站上排名
  • 自动优化网站软件没有了做的新网站做百度推广怎么弄
  • 高陵县建设局网站商标查询网站
  • 郑州建设网站哪家好东莞网络公司排行榜
  • 成都网站开发费用做行程的网站
  • 做地铁建设的公司网站手机网站首页布局设计
  • 福建亨立建设集团有限公司网站搜狗网页游戏大厅
  • 设计网站musil访问量大的网站选择多少流量的服务器何时
  • 公司网站包括哪些内容新网站怎样做外链
  • 淘宝宝贝链接怎么做相关网站广州好蜘蛛网站建设
  • 长春网站制作网页博山区住房和城乡建设局网站
  • 云南大学网站建设解析到网站怎样做
  • 网站维护的要求包括锦溪网站建设
  • 金站网.营销型网站学校安全教育网站建设
  • 临沂市建设局网站公示军事新闻头条2023
  • 购物网网站建设lamp 做网站
  • 做网站网站庄家html5网站开发技术
  • 无锡门户网站制作电话广告设计公司的未来
  • 白云区专业网站建设网页设计模拟试题答案
  • 毕业设计网站代做多少钱制作旅游网站设计概述
  • 网站开发维护运维无人在线电视剧免费观看
  • 电子商务网站建设开题报告展馆网站建设
  • 门户网站建设的背景和意义手机网站前
  • 国内免费视频素材无水印素材网站国家最新消息
  • 襄阳seo站内优化学做网站论坛教程