|
锁定老贴子 主题:PO2VO和VO2PO转换层的类.附源码!
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2004-06-04
下面的代码是我的程序自动生成器根据数据库字段自动生成的.初步试用了一下,没发现问题.
代码中的InitFilter 类是对录入词句自动进行过滤的一个STRUTS插件类. 对录入和输出过滤进行双向控制.(将另文介绍) package com.yours.admin.map; import java.util.Iterator; import java.util.List; import java.util.Vector; import java.util.Date; import java.text.DateFormat; import java.text.SimpleDateFormat; import org.apache.log4j.Logger; import com.iclass.plugin.InitFiltrate; import com.yours.admin.web.UserActionForm; import com.yours.admin.jdo.User; /** * <p>Title:VO和PO的转换 </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2004</p> * <p>Company: </p> * @author 段洪杰 * @version 1.0 */ public class UserMap { private static Logger log = Logger.getLogger(UserMap.class); /** * @param userActionForm UserActionForm * @return User */ public User getUser(UserActionForm userActionForm){ User user=new User(); /* 转换 ID(id) */ try { user.setId(userActionForm.getId()); } catch (Exception ex) { } /* 转换 用户名(name) */ try { user.setName(InitFiltrate.getFiltrate().inExchange(userActionForm.getName())); } catch (Exception ex) { } /* 转换 注册名(registername) */ try { user.setRegistername(InitFiltrate.getFiltrate().inExchange(userActionForm.getRegistername())); } catch (Exception ex) { } /* 转换 性别(sex) */ try { user.setSex(InitFiltrate.getFiltrate().inExchange(userActionForm.getSex())); } catch (Exception ex) { } /* 转换 年龄(age) */ try { user.setAge(Integer.parseInt(userActionForm.getAge())); } catch (Exception ex) { } /* 转换 口令(password) */ try { user.setPassword(InitFiltrate.getFiltrate().inExchange(userActionForm.getPassword())); } catch (Exception ex) { } /* 转换 地址(address) */ try { user.setAddress(InitFiltrate.getFiltrate().inExchange(userActionForm.getAddress())); } catch (Exception ex) { } /* 转换 电话(phone) */ try { user.setPhone(InitFiltrate.getFiltrate().inExchange(userActionForm.getPhone())); } catch (Exception ex) { } /* 转换 传真(fax) */ try { user.setFax(InitFiltrate.getFiltrate().inExchange(userActionForm.getFax())); } catch (Exception ex) { } /* 转换 电子邮件(email) */ try { user.setEmail(InitFiltrate.getFiltrate().inExchange(userActionForm.getEmail())); } catch (Exception ex) { } /* 转换 主页(homepage) */ try { user.setHomepage(InitFiltrate.getFiltrate().inExchange(userActionForm.getHomepage())); } catch (Exception ex) { } /* 转换 问题(question) */ try { user.setQuestion(InitFiltrate.getFiltrate().inExchange(userActionForm.getQuestion())); } catch (Exception ex) { } /* 转换 答案(answer) */ try { user.setAnswer(InitFiltrate.getFiltrate().inExchange(userActionForm.getAnswer())); } catch (Exception ex) { } /* 转换 ip(ip) */ try { user.setIp(userActionForm.getIp()); } catch (Exception ex) { } /* 转换 组织ID(teamid) */ try { user.setTeamid(InitFiltrate.getFiltrate().inExchange(userActionForm.getTeamid())); } catch (Exception ex) { } /* 转换 角色ID(roleid) */ try { user.setRoleid(InitFiltrate.getFiltrate().inExchange(userActionForm.getRoleid())); } catch (Exception ex) { } /* 转换 失效期(outdate) */ DateFormat dateFormatOutdate = new SimpleDateFormat("yyyy-MM-dd"); Date dateOutdate = null; try { dateOutdate = dateFormatOutdate.parse(userActionForm.getOutdate()); user.setOutdate(dateOutdate); } catch (Exception ex) { } /* 转换 时间(createdate) */ DateFormat dateFormatCreatedate = new SimpleDateFormat("yyyy-MM-dd hh:ss:mm"); Date dateCreatedate = null; try { dateCreatedate = dateFormatCreatedate.parse(userActionForm.getCreatedate()); user.setCreatedate(dateCreatedate); } catch (Exception ex) { } /* 转换 单位名称(company) */ try { user.setCompany(InitFiltrate.getFiltrate().inExchange(userActionForm.getCompany())); } catch (Exception ex) { } /* 转换 部门(office) */ try { user.setOffice(InitFiltrate.getFiltrate().inExchange(userActionForm.getOffice())); } catch (Exception ex) { } /* 转换 单位地址(companyaddress) */ try { user.setCompanyaddress(InitFiltrate.getFiltrate().inExchange(userActionForm.getCompanyaddress())); } catch (Exception ex) { } /* 转换 职位(position) */ try { user.setPosition(InitFiltrate.getFiltrate().inExchange(userActionForm.getPosition())); } catch (Exception ex) { } /* 转换 用户等级(usergrade) */ try { user.setUsergrade(InitFiltrate.getFiltrate().inExchange(userActionForm.getUsergrade())); } catch (Exception ex) { } /* 转换 单位等级(businessgrade) */ try { user.setBusinessgrade(InitFiltrate.getFiltrate().inExchange(userActionForm.getBusinessgrade())); } catch (Exception ex) { } /* 转换 是否是单位注册(isbusiness) */ try { user.setIsbusiness(Integer.parseInt(userActionForm.getIsbusiness())); } catch (Exception ex) { } /* 转换 审核(isauditing) */ try { user.setIsauditing(Integer.parseInt(userActionForm.getIsauditing())); } catch (Exception ex) { } /* 转换 说明(message) */ try { user.setMessage(InitFiltrate.getFiltrate().inExchange(userActionForm.getMessage())); } catch (Exception ex) { } return user; } /** * @param user User * @return UserActionForm */ public UserActionForm getUserActionForm(User user){ UserActionForm userActionForm=new UserActionForm(); /* 转换 ID(id) */ try { userActionForm.setId(user.getId()); } catch (Exception ex) { } /* 转换 用户名(name) */ try { userActionForm.setName(InitFiltrate.getFiltrate().outExchange(user.getName())); } catch (Exception ex) { } /* 转换 注册名(registername) */ try { userActionForm.setRegistername(InitFiltrate.getFiltrate().outExchange(user.getRegistername())); } catch (Exception ex) { } /* 转换 性别(sex) */ try { userActionForm.setSex(InitFiltrate.getFiltrate().outExchange(user.getSex())); } catch (Exception ex) { } /* 转换 年龄(age) */ try { userActionForm.setAge(user.getAge()+""); } catch (Exception ex) { } /* 转换 口令(password) */ try { userActionForm.setPassword(InitFiltrate.getFiltrate().outExchange(user.getPassword())); } catch (Exception ex) { } /* 转换 地址(address) */ try { userActionForm.setAddress(InitFiltrate.getFiltrate().outExchange(user.getAddress())); } catch (Exception ex) { } /* 转换 电话(phone) */ try { userActionForm.setPhone(InitFiltrate.getFiltrate().outExchange(user.getPhone())); } catch (Exception ex) { } /* 转换 传真(fax) */ try { userActionForm.setFax(InitFiltrate.getFiltrate().outExchange(user.getFax())); } catch (Exception ex) { } /* 转换 电子邮件(email) */ try { userActionForm.setEmail(InitFiltrate.getFiltrate().outExchange(user.getEmail())); } catch (Exception ex) { } /* 转换 主页(homepage) */ try { userActionForm.setHomepage(InitFiltrate.getFiltrate().outExchange(user.getHomepage())); } catch (Exception ex) { } /* 转换 问题(question) */ try { userActionForm.setQuestion(InitFiltrate.getFiltrate().outExchange(user.getQuestion())); } catch (Exception ex) { } /* 转换 答案(answer) */ try { userActionForm.setAnswer(InitFiltrate.getFiltrate().outExchange(user.getAnswer())); } catch (Exception ex) { } /* 转换 ip(ip) */ try { userActionForm.setIp(user.getIp()); } catch (Exception ex) { } /* 转换 组织ID(teamid) */ try { userActionForm.setTeamid(InitFiltrate.getFiltrate().outExchange(user.getTeamid())); } catch (Exception ex) { } /* 转换 角色ID(roleid) */ try { userActionForm.setRoleid(InitFiltrate.getFiltrate().outExchange(user.getRoleid())); } catch (Exception ex) { } /* 转换 失效期(outdate) */ DateFormat dateFormatOutdate = new SimpleDateFormat("yyyy-MM-dd"); String dateStringOutdate = ""; try { dateStringOutdate = dateFormatOutdate.format(user.getOutdate()); userActionForm.setOutdate(dateStringOutdate); } catch (Exception ex) { } /* 转换 时间(createdate) */ DateFormat dateFormatCreatedate = new SimpleDateFormat("yyyy-MM-dd hh:ss:mm"); String dateStringCreatedate = ""; try { dateStringCreatedate = dateFormatCreatedate.format(user.getCreatedate()); userActionForm.setCreatedate(dateStringCreatedate); } catch (Exception ex) { } /* 转换 单位名称(company) */ try { userActionForm.setCompany(InitFiltrate.getFiltrate().outExchange(user.getCompany())); } catch (Exception ex) { } /* 转换 部门(office) */ try { userActionForm.setOffice(InitFiltrate.getFiltrate().outExchange(user.getOffice())); } catch (Exception ex) { } /* 转换 单位地址(companyaddress) */ try { userActionForm.setCompanyaddress(InitFiltrate.getFiltrate().outExchange(user.getCompanyaddress())); } catch (Exception ex) { } /* 转换 职位(position) */ try { userActionForm.setPosition(InitFiltrate.getFiltrate().outExchange(user.getPosition())); } catch (Exception ex) { } /* 转换 用户等级(usergrade) */ try { userActionForm.setUsergrade(InitFiltrate.getFiltrate().outExchange(user.getUsergrade())); } catch (Exception ex) { } /* 转换 单位等级(businessgrade) */ try { userActionForm.setBusinessgrade(InitFiltrate.getFiltrate().outExchange(user.getBusinessgrade())); } catch (Exception ex) { } /* 转换 是否是单位注册(isbusiness) */ try { userActionForm.setIsbusiness(user.getIsbusiness()+""); } catch (Exception ex) { } /* 转换 审核(isauditing) */ try { userActionForm.setIsauditing(user.getIsauditing()+""); } catch (Exception ex) { } /* 转换 说明(message) */ try { userActionForm.setMessage(InitFiltrate.getFiltrate().outExchange(user.getMessage())); } catch (Exception ex) { } return userActionForm; } /** * 成批转换 * @param Iterator * @return Iterator */ public Iterator getUserActionForms(Iterator users){ List list=new Vector(); while(users.hasNext()){ User user=(User)users.next(); UserActionForm userActionForm=this.getUserActionForm(user); list.add(userActionForm); } return list.iterator(); } } 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2004-06-05
每个属性都要写一个转换,不累啊,
考虑一下beanutils吧。 |
|
| 返回顶楼 | |
|
最后更新时间:2004-06-05
你这样太麻烦了吧?
我是通过通用的反射来实现的,因为反射性能的原因,所以我要求我的程序员在8个以下属性的对象赋值就直接赋值了。 |
|
| 返回顶楼 | |
|
最后更新时间:2004-06-05
顺带问一下楼上,beanutils是哪里的东东,介绍介绍
|
|
| 返回顶楼 | |
|
最后更新时间:2004-06-05
如果我没记错的话,beanutils是Apache的Common lib里面的东东。另外我同意你的做法,要copy的话还是反射来的爽些。
|
|
| 返回顶楼 | |
|
最后更新时间:2004-06-05
射覆请客 写道 每个属性都要写一个转换,不累啊,
考虑一下beanutils吧。 已经说明过了,这个类是用程序自动生成的,我不需要写. 我认为beanutils 是有缺点的. 在JSP显示,整型,日期,浮点型之类的要转为String,如果用beanutils 还得手工转一下. 而自已做的,自动转了. 我又说过,这里面还加了一个过滤层,做成一个STRUTS的插入件了,通过配置XML来增加过滤的语句,这样几个功能集中起来了. 在VO和PO转换时,中间加一个过滤器,是一个好办法. |
|
| 返回顶楼 | |
|
最后更新时间:2004-06-05
dhj1 写道 我认为beanutils 是有缺点的. 在JSP显示,整型,日期,浮点型之类的要转为String,如果用beanutils 还得手工转一下. 而自已做的,自动转了.
没有明白你所说的jsp显示和vo,po转换有什么关系。以你这个例子而言,只是在User和UserActionForm之间copy properties,页面的显示的是UserActionForm,跟你怎么转换没有什么关系吧,你的UserActionFrom中的属性类型是不会因为你怎么转换而改变的。 beanutils的copyproperty是自动适配目标属性的类型的,用起来很方便。 |
|
| 返回顶楼 | |
|
最后更新时间:2004-06-05
另外还有一个不明白的地方,你的InitFiltrate只是设置了一些过滤规则,过滤的时候依然需要自行调用InExchange方法,plugin有什么作用,只是完成初始化?
如果只是这样,我觉得还不如不要plugin,程序看起来还清楚一些。(个人意见) |
|
| 返回顶楼 | |
|
最后更新时间:2004-06-05
dhj1 写道 已经说明过了,这个类是用程序自动生成的,我不需要写. 我认为beanutils 是有缺点的. 在JSP显示,整型,日期,浮点型之类的要转为String,如果用beanutils 还得手工转一下. 而自已做的,自动转了. beanutils.copyproperties(JavaBean, JavaBean)只要属性名称相同,对于整形,日期,浮点数等都会帮你自动转换。 dhj1 写道 我又说过,这里面还加了一个过滤层,做成一个STRUTS的插入件了,通过配置XML来增加过滤的语句,这样几个功能集中起来了. 在VO和PO转换时,中间加一个过滤器,是一个好办法. 我认为在中间加一个转换器是有必要的,因为毕竟beanutils有缺点(深度copy),而且有时候满足不了需求 |
|
| 返回顶楼 | |
|
最后更新时间:2004-06-05
射覆请客 写道 另外还有一个不明白的地方,你的InitFiltrate只是设置了一些过滤规则,过滤的时候依然需要自行调用InExchange方法,plugin有什么作用,只是完成初始化?
如果只是这样,我觉得还不如不要plugin,程序看起来还清楚一些。(个人意见) 当然需要,否则为什么要用plugin .当然也可以不要,但是会麻烦很多.什么原因我就不说了,只有读了InitFiltrate 的代码就知道了. |
|
| 返回顶楼 | |








