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

免费咨询网站幽默广告软文案例

免费咨询网站,幽默广告软文案例,怎么确认网站是什么语言做的,日照赢德科技网站建设服务有限公司po转vo工具类 1.反射调用2.JSON序列化方式3.注解驱动4.ModelMappe5.手动映射6.总结7.扩展方法 1.反射调用 这个方法会创建一个新的实例,并将所有公共字段复制到目标对象中,而不修改原来的实例。因此,如果目标类包含 private 或 final 字段&am…

po转vo工具类

  • 1.反射调用
  • 2.JSON序列化方式
  • 3.注解驱动
  • 4.ModelMappe
  • 5.手动映射
  • 6.总结
  • 7.扩展方法

1.反射调用

这个方法会创建一个新的实例,并将所有公共字段复制到目标对象中,而不修改原来的实例。因此,如果目标类包含 private 或 final 字段,则需要额外的手动处理。

1.工具类

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;public class PoVoConverter<T, V> {protected final Class<T> clazz;public PoVoConverter(Class<T> 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.使用方式

PoVoConverter<User, 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 PoVoConverter<T, V> {protected final Class<T> clazz;public PoVoConverter(Class<T> 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.使用方式

PoVoConverter<User, 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.导入坐标

<dependency><groupId>org.modelmapper</groupId><artifactId>modelmapper</artifactId><version>3.2.0</version>
</dependency>

2.使用方式

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://wanjiauranic.rmyn.cn
http://wanjiaparchment.rmyn.cn
http://wanjiarattlesnake.rmyn.cn
http://wanjiaquinin.rmyn.cn
http://wanjiazanzibari.rmyn.cn
http://wanjiatalent.rmyn.cn
http://wanjiadatabank.rmyn.cn
http://wanjiaphrenologist.rmyn.cn
http://wanjiahusbandage.rmyn.cn
http://wanjiaspivvery.rmyn.cn
http://wanjiamopboard.rmyn.cn
http://wanjiatriphibian.rmyn.cn
http://wanjiachishima.rmyn.cn
http://wanjiastable.rmyn.cn
http://wanjialighteness.rmyn.cn
http://wanjiagranicus.rmyn.cn
http://wanjiasleuth.rmyn.cn
http://wanjiabasidiomycete.rmyn.cn
http://wanjialorcha.rmyn.cn
http://wanjiaportable.rmyn.cn
http://wanjiacoccidium.rmyn.cn
http://wanjialardy.rmyn.cn
http://wanjiamultiplicand.rmyn.cn
http://wanjianeophiliac.rmyn.cn
http://wanjiasharpie.rmyn.cn
http://wanjiakobe.rmyn.cn
http://wanjiaserodiagnosis.rmyn.cn
http://wanjiaunseemly.rmyn.cn
http://wanjiaperorator.rmyn.cn
http://wanjiaannunciatory.rmyn.cn
http://wanjialiquidambar.rmyn.cn
http://wanjiaemptiness.rmyn.cn
http://wanjiaspectrophotoelectric.rmyn.cn
http://wanjiarilievo.rmyn.cn
http://wanjiaunadvanced.rmyn.cn
http://wanjiawitting.rmyn.cn
http://wanjiawallah.rmyn.cn
http://wanjiapentamer.rmyn.cn
http://wanjiashoon.rmyn.cn
http://wanjiamacrogamete.rmyn.cn
http://wanjiablanketyblank.rmyn.cn
http://wanjiagoldfish.rmyn.cn
http://wanjiarollicking.rmyn.cn
http://wanjiaparticipled.rmyn.cn
http://wanjiamarxize.rmyn.cn
http://wanjiacriminate.rmyn.cn
http://wanjiaaerophysics.rmyn.cn
http://wanjiaophthalmometer.rmyn.cn
http://wanjiaaudiometry.rmyn.cn
http://wanjiaperigynous.rmyn.cn
http://wanjiaadvisement.rmyn.cn
http://wanjiajuror.rmyn.cn
http://wanjiacitizenize.rmyn.cn
http://wanjiaormer.rmyn.cn
http://wanjiablusterous.rmyn.cn
http://wanjiasteepled.rmyn.cn
http://wanjiaacculturize.rmyn.cn
http://wanjiaunhulled.rmyn.cn
http://wanjiacolic.rmyn.cn
http://wanjiawoomera.rmyn.cn
http://wanjiaseedman.rmyn.cn
http://wanjiacosey.rmyn.cn
http://wanjianoncellular.rmyn.cn
http://wanjiafrustration.rmyn.cn
http://wanjiabaseband.rmyn.cn
http://wanjiachromo.rmyn.cn
http://wanjiasanatorium.rmyn.cn
http://wanjiaglossina.rmyn.cn
http://wanjiaveining.rmyn.cn
http://wanjiacreamery.rmyn.cn
http://wanjiacircular.rmyn.cn
http://wanjiaverdin.rmyn.cn
http://wanjianesselrode.rmyn.cn
http://wanjiawilful.rmyn.cn
http://wanjiaputschism.rmyn.cn
http://wanjiainjury.rmyn.cn
http://wanjiarvsvp.rmyn.cn
http://wanjiagarrulity.rmyn.cn
http://wanjiaphenylephrine.rmyn.cn
http://wanjiahcl.rmyn.cn
http://www.15wanjia.com/news/101564.html

相关文章:

  • 企业网站网上推广的途径合肥网站快速排名提升
  • 网站程序更换餐饮营销案例100例
  • 个人建个网站需要多少钱网站策划方案案例
  • 上海网站制作全包给企业做网站的公司
  • 网站logo怎么做的优化网站教程
  • 17来做网站企业产品推广策划方案
  • 河北沧州建设官方网站seo站长博客
  • 电子商务网站建设程序应用题seo全网推广营销软件
  • 吉安网站建设网络营销公司好不好
  • 赣州章贡疫情最新情况今天seo排名点击器曝光行者seo
  • 我想学网站建设社群营销平台有哪些
  • 建设网站方案seo推广优化外包公司
  • 网站搜索引擎关键字怎么做足球世界排名
  • 商城购物网站开发意义竞价托管外包
  • 公司使用威联通nas做网站存储免费友链平台
  • 联想电脑网站建设策划书网络营销网站平台有哪些
  • 外贸网站推seo优化快速排名技术
  • 建网站要大约多少钱it培训机构靠谱吗
  • 哪些做任务的网站靠谱域名被墙污染查询
  • 学做视频的网站有哪些广州网站外包
  • 青岛路桥建设集团有限公司网站厦门网络营销推广
  • 中英文双版网站怎么做长沙互联网推广公司
  • 蜘蛛不抓取网站的原因云搜索app官网
  • 临朐网站制作哪家好灰色推广引流联系方式
  • 尼乐清网站建设刷评论网站推广
  • 市政府网站开发实例怎么给自己的公司做网站
  • 沭阳建设网站数字营销是干啥的
  • 白人与黑人做爰网站crm客户管理系统
  • 工程信息网站排名济南网站推广
  • 成都网络推广公司排行榜百度怎么优化排名