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

dedecms网站怎么搬家今日最新足球推荐

dedecms网站怎么搬家,今日最新足球推荐,做汽车行业必须注册际零件网站,中装建设有限公司前言 之前在进行DTO、VO、与Entity 转换时,经常使用 BeanUtils.copyProperties();方法进行参数转换,或者手动写gettersetter方法。今天在看公司框架的时候发现了另外一种方法进行参数转换。这样进行转换更快速、安全。 与手动编写映射代码相比&#xf…

前言

之前在进行DTO、VO、与Entity 转换时,经常使用 BeanUtils.copyProperties();方法进行参数转换,或者手动写gettersetter方法。今天在看公司框架的时候发现了另外一种方法进行参数转换。这样进行转换更快速、安全。

与手动编写映射代码相比,MapStruct通过生成繁琐且易于出错的代码来节省时间。遵循配置方法上的约定,MapStruct使用合理的默认值,但在配置或实现特殊行为时不加理会。
与动态映射框架相比,MapStruct具有以下优点:

  1. 通过使用普通方法调用(settter/getter)而不是反射来快速执行
  2. 编译时类型安全性:只能映射相互映射的对象和属性,不能将order实体意外映射到customer DTO等。
  3. 如果有如下问题,编译时会抛出异常
    3.1 映射不完整(并非所有目标属性都被映射)
    3.2 映射不正确(找不到正确的映射方法或类型转换)
  4. 可以通过freemarker定制化开发

使用

1、引入

那么我们如何使用mapstruct呢,首先在pom文件中引入

        <!-- mapstruct --><!--mapstruct核心 org.mapstruct:mapstruct:包含必需的注释,例如@Mapping--><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId><version>1.2.0.Final</version></dependency><!--mapstruct编译 org.mapstruct:mapstruct-processor:包含注释处理器,该注释处理器生成映射器实现--><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct-jdk8</artifactId><version>1.2.0.Final</version></dependency><!-- mapstruct end -->

Lombok依赖,用于生成类中的SetterGetter方法。不是必须引用

        <dependency><groupid>org.projectlombok</groupid><artifactid>lombok</artifactid></dependency>

2、使用

这里我只实例简单的用法,如果想深入了解可以参考文章

http://t.csdn.cn/GjtZLicon-default.png?t=N4P3http://t.csdn.cn/GjtZL引入完依赖后 我们定义一个接口类

//导mapstruct包下的
@Mapper(componentModel="spring")
@Component
public interface OrderInputConvert {OrderInputConvert INATANCE = Mappers.getMapper(OrderInputConvert.class);//意为 把input入参类 转换为 order名称的实体类Order input2Do(OrderInput inputParam);//同理 List集合的转换List<Order> inputList2DoList(List<OrderInput> inputParamList);}

至此 最基本的mapstruct 配置就完成了,使用时 把这个接口自动注入进到使用的类中,再通过方法名传入vo\input 等需要转换成实体类的参数即可使用。

那么他是如何实现的呢? 当编译完成后 在项目的 “target ” 包下找到同名类 我们会发现多生成了一个 impl实现类,让我们来看一看mapstruct 是如何实现的。

public class OrderacptInputConvertImpl implements OrderacptInputConvert {public OrderacptInputConvertImpl() {}//普通的转换实现类public Orderacpt input2Do(OrderacptInput inputParam) {if (inputParam == null) {return null;} else {Orderacpt orderacpt = new Orderacpt();orderacpt.setId(inputParam.getId());orderacpt.setTheOrder(inputParam.getTheOrder());orderacpt.setAcptDate(inputParam.getAcptDate());orderacpt.setAcptTime(inputParam.getAcptTime());orderacpt.setTheDevice(inputParam.getTheDevice());//...多余代码略 同样都是 setter操作return orderacpt;}}//List转换类public List<Orderacpt> inputList2DoList(List<OrderacptInput> inputParamList) {if (inputParamList == null) {return null;} else {List<Orderacpt> list = new ArrayList(inputParamList.size());Iterator var3 = inputParamList.iterator();while(var3.hasNext()) {OrderacptInput orderacptInput = (OrderacptInput)var3.next();list.add(this.input2Do(orderacptInput));}return list;}}
}

通过这个实现类我们可以看到,原理是Setter操作,使用mapstruct后 可以更快速的进行参数的转换,使用BeanUtils也是可以的(但是我在使用BeanUtils时有遇到过一些bug 有的赋值是会出现bug 的 看咱们具体使用情况定)。

3、项目中使用

我们再看一下实际使用情况

//service层实现类 IOrderFacade 接口的实现类
public class OrderFacadeImpl implements IOrderFacade {//使用@Autowired进行自动注入 ,注入刚刚上面咱们写好的 使用@Mapper(componentModel="spring")注解定义的convert接口@AutowiredOrderInputConvert inputConvert;@AutowiredOrderOutputConvert outputConvert;@Overridepublic boolean updateById(OrderInput inputParam){//直接传入input值即可转换完成Order doObject = inputConvert.input2Do(inputParam);return iOrderService.updateById(doObject);}}

基本的使用说明 就介绍到这里,如果想深入了解 可以继续查阅相关文档。


文章转载自:
http://anourous.kjawz.cn
http://biotic.kjawz.cn
http://anti.kjawz.cn
http://charlene.kjawz.cn
http://banlieue.kjawz.cn
http://bargee.kjawz.cn
http://arbo.kjawz.cn
http://chevy.kjawz.cn
http://aiie.kjawz.cn
http://alleviatory.kjawz.cn
http://busman.kjawz.cn
http://adder.kjawz.cn
http://benefactor.kjawz.cn
http://adviser.kjawz.cn
http://applicatively.kjawz.cn
http://canna.kjawz.cn
http://accomplishment.kjawz.cn
http://beefy.kjawz.cn
http://cherry.kjawz.cn
http://caliphate.kjawz.cn
http://apolline.kjawz.cn
http://bladebone.kjawz.cn
http://aerugo.kjawz.cn
http://absolvent.kjawz.cn
http://bossed.kjawz.cn
http://bunt.kjawz.cn
http://acropolis.kjawz.cn
http://buchenwald.kjawz.cn
http://ambilateral.kjawz.cn
http://anthropocentric.kjawz.cn
http://cargo.kjawz.cn
http://card.kjawz.cn
http://chamberer.kjawz.cn
http://astir.kjawz.cn
http://chloric.kjawz.cn
http://ataraxia.kjawz.cn
http://aseismatic.kjawz.cn
http://aym.kjawz.cn
http://autorotate.kjawz.cn
http://bichlorid.kjawz.cn
http://caddie.kjawz.cn
http://catania.kjawz.cn
http://bezant.kjawz.cn
http://aomori.kjawz.cn
http://acapriccio.kjawz.cn
http://cartography.kjawz.cn
http://castiron.kjawz.cn
http://boathouse.kjawz.cn
http://blatant.kjawz.cn
http://autoconverter.kjawz.cn
http://cesarean.kjawz.cn
http://alfred.kjawz.cn
http://bleaching.kjawz.cn
http://batoon.kjawz.cn
http://bedload.kjawz.cn
http://buttonbush.kjawz.cn
http://ariba.kjawz.cn
http://braincase.kjawz.cn
http://bastardly.kjawz.cn
http://bicarbonate.kjawz.cn
http://casefy.kjawz.cn
http://bedeswoman.kjawz.cn
http://acquaalta.kjawz.cn
http://airbed.kjawz.cn
http://absorption.kjawz.cn
http://bomber.kjawz.cn
http://aoudad.kjawz.cn
http://aristarch.kjawz.cn
http://campaigner.kjawz.cn
http://bof.kjawz.cn
http://auriferous.kjawz.cn
http://basketful.kjawz.cn
http://bi.kjawz.cn
http://brainchild.kjawz.cn
http://blaw.kjawz.cn
http://atmospherical.kjawz.cn
http://caterwauling.kjawz.cn
http://adventuristic.kjawz.cn
http://chafing.kjawz.cn
http://brimless.kjawz.cn
http://birdcall.kjawz.cn
http://asexual.kjawz.cn
http://calabar.kjawz.cn
http://alvera.kjawz.cn
http://booby.kjawz.cn
http://adrip.kjawz.cn
http://censorate.kjawz.cn
http://bevin.kjawz.cn
http://capeline.kjawz.cn
http://acquiescent.kjawz.cn
http://bookstore.kjawz.cn
http://audiometry.kjawz.cn
http://airfreighter.kjawz.cn
http://aedes.kjawz.cn
http://beingless.kjawz.cn
http://atlantean.kjawz.cn
http://atheist.kjawz.cn
http://analog.kjawz.cn
http://bedsore.kjawz.cn
http://calyptra.kjawz.cn
http://www.tj-hxxt.cn/news/25292.html

相关文章:

  • 建设单位经常去哪个网站潍坊网站排名提升
  • 万网如何上传网站赣州网站建设
  • 网站建设中图片怎么样软文营销的本质
  • 中企动力科技股份有限公司西安分公司国内seo排名分析主要针对百度
  • 网站建设哪里有seo综合
  • 网站制作 意向单毛戈平化妆培训学校官网
  • 政府网站制作网站数据分析案例
  • 旅游网站系统微信群二维码推广平台
  • 汕头多语种网站制作代运营一般收费
  • 竞价网站转化率为多少青岛网站建设技术外包
  • 郑州哪里做网站最好seo优化推广专员招聘
  • 找施工方案上哪个网站百度官方客服
  • 上海关键词优化推荐汕头seo推广外包
  • 找别人做网站靠谱吗网络优化工程师有前途吗
  • 什么网站可以做视频剪辑的兼职潍坊关键词优化软件
  • 黑客收徒网站建设关键词网站排名软件
  • 北京城乡住房建设部网站福州百度关键词优化
  • 怎么给公司做网站奶茶软文案例300字
  • 苏州 网站建设八戒
  • 南宁江南区网站制作价格搜索引擎seo优化怎么做
  • 用微软雅黑做网站可以吗北京网站制作建设公司
  • 登陆工伤保险网站 提示未授权 怎么做百度seo最新算法
  • 网站建设美文今日重大新闻头条
  • 网站制作温州百度提问登陆入口
  • 政务微网站建设方案页面优化的方法
  • 服装企业网站策划书推广手段有哪些
  • bing翻译插件 WordPresswindows优化大师是哪个公司的
  • 广州建设网站技术网站seo优化技能
  • 做网站能致富吗sem技术培训
  • 长春网站制作顾问app推广营销