加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

java – 更新表的多行的最快方法是什么

发布时间:2020-12-11 23:50:07 所属栏目:MySql教程 来源:网络整理
导读:我有一个名为messages的表,其中包含toUser,message和status列. 我想更新特定用户的所有消息状态. 所以,我写了这样一个查询, Session s = DB.getSession();s.createSQLQuery("UPDATE `message` SET `status`='0' WHERE `toUser`='3'").executeUpdate();s.clos

我有一个名为messages的表,其中包含toUser,message和status列.
我想更新特定用户的所有消息状态.

所以,我写了这样一个查询,

Session s = DB.getSession();
s.createSQLQuery("UPDATE `message` SET `status`='0' WHERE `toUser`='3'").executeUpdate();
s.close();

但后来我被告知使用纯hibernate方法更新更快更有效(我认为它必须对hibernate池做一些事情),如下所示.

Session s = DB.getSession();
Transaction tr = s.beginTransaction();
Criteria cr = s.createCriteria(Connection.Pojo.Message.class);
cr.add(Restrictions.eq("toUser",3));
List

那么,我的问题是更新这些行的最快方法是什么?如果可能,请提供详细的答案.

谢谢你的建议.

最佳答案 我认为通过“纯Hibernate方法”他们意味着使用HQL update:

Session s = DB.getSession();
s.createQuery("UPDATE message m SET m.status=:newStatus WHERE toUser=:userId")
    .setInteger("newStatus",0)
    .setInteger("userId",3)
    .executeUpdate();
s.close();

此方法提供的性能与SQL解决方案等效.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读