在Hibernate中,批量更新和批量删除用于操作大量的数据,可以提高性能和效率。主要有以下两种实现方式:
- SQL语句批量操作:
- 使用Session的createSQLQuery()方法执行带有IN关键字的SQL语句,实现批量更新或删除。
例如:批量更新
String hql = "update Customer set name=? where id IN (:ids)";
SQLQuery query = session.createSQLQuery(hql);
query.setParameter("name", "John");
query.setParameterList("ids", idList); // 传入id列表
int count = query.executeUpdate();
例如:批量删除
String hql = "delete from Customer where id IN (:ids)";
SQLQuery query = session.createSQLQuery(hql);
query.setParameterList("ids", idList);
int count = query.executeUpdate();
- HQL语句批量操作:
- 使用Session的createQuery()方法执行带有IN关键字的HQL语句,实现批量更新或删除。
例如:批量更新
String hql = "update Customer set name=? where id IN (:ids)";
Query query = session.createQuery(hql);
query.setParameter("name", "John");
query.setParameterList("ids", idList);
int count = query.executeUpdate();
例如:批量删除
String hql = "delete Customer where id IN (:ids)";
Query query = session.createQuery(hql);
query.setParameterList("ids", idList);
int count = query.executeUpdate();