在保存数据的时候总是会碰到这样的重复且啰嗦的语句,如:
user.setDate(form.getDate());
user.setName(form.getName());
user.setUserId(form.getUserId());
user.setPassword(form.getPassword());
user.setTitle(form.getTitle());
........
this.getUserService().save(user);
上面的语句属性少一些倒还可以接受,万一有很多需要setXXX(getXXX()),这样写太麻烦了。
Hibernate中有没有简化的写法,我记得有一个类可以,但忘了,麻烦指点一下,谢谢了先.
[code="java"]import org.apache.commons.beanutils.BeanUtils;
保存数据时先 User user = new User();
然后把你传过来的参数用个实体接收。
BeanUtils.copyProperties(user, '实体名');
[/code]
这样就可以了,避免了很多的set,get方法。但是对于字段少的使用此方法效率会不如set,get的方式。
同意楼上意见
使用Apache的开源包BeanUtils,使用方法见一楼,或者自己用反射写一个方法。
[code="java"]
public static Field getType(Object orig, String name) {
Field[] origF = orig.getClass().getDeclaredFields();
for (int i = 0; i < origF.length; i++) {
if (origF[i].getName().equals(name)) {
return origF[i];
}
}
return null;
}
public static Object copy(Object dest, Object orig) {
if (dest == null || orig == null) {
return dest;
}
Field[] destF = dest.getClass().getDeclaredFields();
for (int i = 0; i < destF.length; i++) {
Class destType = destF[i].getType();
Field origField = BeanUtil.getType(orig, destF[i].getName());
if (origField == null) {
continue;
}
Class origType = origField.getType();
if (origType != null && destType != null && destType.equals(origType)
&& !destType.equals(Class.class)) {
if(!Collection.class.isAssignableFrom(origType)){
try{
destF[i].setAccessible(true);
Object value = destF[i].get(dest);
if(null != value) {
origField.setAccessible(true);
origField.set(orig, value);
}
}catch(Exception ex){
ex.printStackTrace();
}
}
}
}
return orig;
}[/code]