在做业务的时候,为了隔离变化,我们会将DAO查询出来的DO和对前端提供的DTO隔离开来.大概90%的时候,它们的结构都是类似的:但是我们很不喜欢写很多冗长的b.setF1(a.getF1())这样的代码,于是我们需要简化对象拷贝方式. 一.背景 1.1 对象拷贝概念 Java中,数据类型分为值类型(基本数据类型)和引用类型,值类型包括int.double.byte.boolean.char等简单数据类型,引用类型包括类.接口.数组等复杂类型. 对象拷贝分为浅拷贝(浅克隆)与深拷贝(深克隆). 浅…
大家在做java开发时,肯定会遇到api层参数对象传递给服务层,或者把service层的对象传递给dao层,他们之间又不是同一个类型对象,但字段又是一样,如果还是用普通的get.set方式来处理话,比较繁琐,.... 那么你来跟我学....."天下武功,唯快不破"===>要的就是快....1.使用get/set不用说了,字段一多脑壳大....2.BeanCopier 使用了cglib的修改字节码,真的是动态Read Writer getter/setter 快的一逼啊 源码过于简…
javabean package entity; import java.util.Date; /** * 一个测试用: * student,javaBean * @author mzy * 一个标准的javaBean: * 1) 属性只要是private修饰的: * 2) 提供setter和getter方法: * 3) 提供无参构造. * 就行了:有参构造等不是必须的. */ public class Student { private int id; private String name;…
1. 对象属性拷贝的常见方式及其性能 在日常编码中,经常会遇到DO.DTO对象之间的转换,如果对象本身的属性比较少的时候,那么我们采用硬编码手工setter也还ok,但如果对象的属性比较多的情况下,手工setter就显得又low又效率又低.这个时候我们就考虑采用一些工具类来进行对象属性的拷贝了. 我们常用的对象属性拷贝的方式有: Hard Code net.sf.cglib.beans.BeanCopier#copy org.springframework.beans.BeanUtils.cop…
我们知道在Java中存在这个接口Cloneable,实现该接口的类都会具备被拷贝的能力,同时拷贝是在内存中进行,在性能方面比我们直接通过new生成对象来的快,特别是在大对象的生成上,使得性能的提升非常明显.然而我们知道拷贝分为深拷贝和浅拷贝之分,但是浅拷贝存在对象属性拷贝不彻底问题.关于深拷贝.浅拷贝的请参考这里:渐析java的浅拷贝和深拷贝 一.浅拷贝问题 我们先看如下代码: public class Person implements Cloneable{ /** 姓名 **/ privat…
      我们知道在Java中存在这个接口Cloneable,实现该接口的类都会具备被拷贝的能力,同时拷贝是在内存中进行,在性能方面比我们直接通过new生成对象来的快,特别是在大对象的生成上,使得性能的提升非常明显.然而我们知道拷贝分为深拷贝和浅拷贝之分,但是浅拷贝存在对象属性拷贝不彻底问题.关于深拷贝.浅拷贝的请参考这里:渐析java的浅拷贝和深拷贝        一.浅拷贝问题       我们先看如下代码: public class Person implements Cloneable…
commons-beanutils是jakarta commons子项目中的一个软件包,其主要目的是利用反射机制对JavaBean的属性进行处理.我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致大量get/set代码堆积,增加了代码长度和阅读代码的难度(什么,你的薪水按代码行数计算?那千万别让老板看到此帖哦) BeanUtils是这个包里比较常用的一个工具类,这里只介绍它的copyProperties()方法.该方法定义如下: public stati…
网上转了一圈发现没有selection方面的解释,自己捣鼓下 以这段文字为例子.. <p><b>法国国营铁路公司(SNCF)20日承认,</b>新订购的2000列火车因车体过宽,<strong>无法开进国内许多火车站的站台,从而不得不花大笔资金改造站台.</strong>法国国营铁路公司发言人克里斯托夫·皮耶诺埃尔告诉法国新闻电台:“我们发现问题晚了点.<b>我们承认这一失误并为此承担责任.”</b></p>…
js中对象属性可以动态添加和删除.删除对象属性用delete关键字. function obj(){ } var oo = new obj(); oo.a = "a"; oo.b = "b"; oo.a; //输出a oo.b; //输出b delete oo.a; oo.a; //输出undefined 在js中对象的属性以键值对的方式来体现,且(在遍历时)无序.js中属性名(也就是key)可以用点来访问(或赋值),也可以用中括号key值来访问(或赋值)(用中括号…
http://wenda.haosou.com/q/1373868839069215 http://kylines.iteye.com/blog/1660236 http://www.cnblogs.com/mslove/archive/2010/04/26/1721024.html window.event代表着事件对象的状态.只有在事件发生时生效.如鼠标.键盘等事件被触发时这个对象才存在.window.event这只在IE下是这样的.他并不是标准..也就是说其他浏览器并不支持.在W3C标准支…