只更新数据库部分字段数据的方法

只更新数据库部分字段数据的方法:
Hibernate中如果直接使用Session.update(Object o);会把这个表中的所有字段更新一遍。
(一)通过控制Hibernate的update语句set后面不出现该字段即可,有3种方法:
(1)XML映射文件中设置property 标签 update = "false" ,如下:设置createTime这个属性在更新中不做修改
 
<property name="createTime" update="false"/>


在注解中 在属性GET方法上加上@Column(updatable=false)
@Column(updatable=false)
    public int getCreateTime() {
        return createTime;
    }
执行update方法会发现,createTime属性不会被更改(不会出现在set后面)
(2)使用XML映射文件中的 dynamic-update="true"
<class name="com.sccin.entity.Student" table="student" dynamic-update="true"/>
这样就不需要在字段上设置了,
将dynamic-update设置为true,同样的更新,hibernate会动态生成SQL语句,没有值的字段不会出现在update语句中
但这样的方法在注解中没有。
(3)使用HQL语句(灵活,方便):
Query query = session.createQuery("update Teacher t set t.name = 'admin' where id = 3");
这句hql语句执行后,只会更新name属性
(二)在web环境中,可以将不需要修改的字段放入session作用域中保存,调用后台update方法时再取出来,
这样,在hibernate执行update语句时,set也会出现该字段,但由于该字段的数据的数据是从session中取出来的,
所以也不会改变该字段的值。(所有框架都适用)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值