热搜
您的位置:首页 >> 游戏

JAVA基础关于beantobeanmapping

2019年11月05日 栏目:游戏

从一个对象图转换到另一个对象图。比如:代码classPerson{ privateStringname; privateDate

从一个对象图转换到另一个对象图。比如:

代码

classPerson{ privateStringname; privateDatebirthdate; //gettersandsetters } classJobCategory{ privateStringcategory; //getterandsetter } classAdultextendsPerson{ privateAdultspouse; privatePerson[]kids privateJobCategoryjobCategory; //gettersandsetters } classPersonBean{ privateStringname; privateDatebirthdate; //gettersandsetters } classJobCategoryBean{ privateStringcategoryName; //getterandsetter } classAdultBeanextendsPersonBean{ privateStringname; privateDatebirthdate; privateJobCategoryBeanjobCategory; privateAdultBeanspouse; privateListkids; //gettersandsetters }

假设AdultBean, PersonBean是从XMLBeans自动代码生成出来的,现在要把这些东西转换成Adult, Person, JobCategory这种对象树。

我理想的情况是,

代码

AdultBeanbean=...; Adultadult=newAdult(); BeanUtils.copy(adult,bean);

然后所有的name, birthdate, jobcategory, spouse, kids都自动转换好了。不能手工转换么?当然能,问题是,当我们每个bean class有二十多个property,有七八种这种bean class,有从axis到xmlbeans,从xmlbeans到业务bean,从甲层到乙层等等等等的转换任务时,这种转换就是一种对程序员的摧残了。

我还以为这个需求不是特别特殊,应该有人遇到过的呢。

当然,我上面举的例子因为JobCategory.name和JobCategoryBean.categoryName这两个property明子不匹配,更一般地说,不是每个property都是那么一对一的,很可能有其它的匹配的不那么整齐的情况发生。

对这种情况,我的解决方法是写一个conversion class:

代码

classAdultConversion{ publicstaticvoidconvert(JobCategorycat,JobCategoryBeanbean){ cat.setName(bean.getCategoryName()); } }

然后把这个conversion class传递给Beans这个facade:

代码

AdultBeanbean=...; Adultadult=newAdult(); Beans.copy(adult,bean,newAdultConversion());

Beans会分析AdultConversion的meta data,发现存在一个客户自定义的从JobCategoryBean到JobCategory的转换方法,于是转换仍然可以成功。 查看本文来源

儿童反复咳嗽有什么办法呢——中医有话说
人流手术快不快?需要多长时间?你清楚吗
拔牙,50个人有1400中疼法,早看早知道
深圳博爱医院罗冬侠
孕前检查
  • 友情链接
  • 合作媒体