hibernate修改数据库已有的对象【简化操作】
来源:互联网 发布:网络有利还是有害 编辑:程序博客网 时间:2024/05/18 17:41
陈科肇
直接上代码:
/** * 更新新的数据并并未修改旧的数据 * @param oldEntity 数据库存在的实体 * @param newEntity 更改后的实体 * @throws IllegalAccessException * @throws IllegalArgumentException */ public void updateNew(T oldEntity,T newEntity) throws Exception{ Field[] oFields = oldEntity.getClass().getDeclaredFields(); Field[] nFields = newEntity.getClass().getDeclaredFields(); //将新的值,替换对应旧的值,其它不对应的保持不变 for(int i=0;i<oFields.length;i++){ Field of = oFields[i]; Field nf = nFields[i]; //仅仅针对反射,通过调用Field.setAccessible(true)方法,关闭了对特定的Field实例的访问检查。现在你可以访问它,尽管它是private,或者protected,或者是package scope,即使调用者不在这个范围内。 of.setAccessible(true); nf.setAccessible(true); if(of.equals(nf) && nf.get(newEntity)!=null){ of.set(oldEntity, nf.get(newEntity)); } oFields[i]=of; } getCurrentSession().update(oldEntity); }
调用
/** * 修改 * @param user 要修改的对象 * @throws Exception */ public void update(ProductUser user) throws Exception { //根据id,从数据库中取出实体对象 ProductUser _user = this.getEntityById(user.getUserid()); productUserDao.updateNew(_user,user); }
说明:有时候,我们要修改数据库中的一个对象,但只修改一个字段,即不完全修改对象的每个对象。也就是说,又想保留不想更改的字段,又想更改想更改的字段。
平常的做法:
/** * 修改 * @param user * @throws Exception */ public void update(ProductUser user) throws Exception { ProductUser _user = this.getEntityById(user.getUserid()); _user.setUsername(user.getUsername()); _user.setPhonenumber(user.getPhonenumber()); _user.setName(user.getName()); _user.setSex(user.getSex()); productUserDao.update(_user); }
这样是不是很麻烦的
0 0
- hibernate修改数据库已有的对象【简化操作】
- 修改已有的应用程序
- Android wiki : 20.操作自己已有的数据库
- abap修改已有的程序
- django集成已有的数据库
- HappyIdiom之五数据库操作之如何导入外部已有的数据库
- 【Sqlserver】修改数据库表中的数据:对缺失的数据根据已有的数据进行修补
- oralce修改已有的表为分区表
- Eclipse里修改已有的svn账号
- 对已有的数据表进行分区操作
- android中访问已有的sqlite数据库
- 如何导入已有的外部数据库
- 如何导入已有的外部数据库
- [Android]如何导入已有的外部数据库
- 如何导入已有的外部数据库
- [Android]如何导入已有的外部数据库
- android中访问已有的sqlite数据库
- [Android]如何导入已有的外部数据库
- iOS数据的持久化(沙盒)
- 剑指offer:两个链表的第一个公共结点输入两个链表,找出它们的第一个公共结点。
- 解决中文PDF 因为未嵌入字体导致在某些环境下的乱码问题
- 【微信公众平台开发】借用微信内置图片浏览功能
- 矩阵的LU分解———学习笔记 ,转载自chinaunix
- hibernate修改数据库已有的对象【简化操作】
- Arduino制作温湿度计
- C++引用&概念及用法
- 异常
- 剑指offer--链表中倒数第k个结点-java
- UDP传输中文乱码、异常解决
- C++成员变量的初始化顺序问题
- 设计模式之单例模式
- Android入门——利用Canvas完成绘制点、圆、直线、路径、椭圆、多边形等2D图形