使用HibernateTemplate批量删除数据

  使用spring + hibernate框架中,一般使用hibernateTemplate来使用Hibernate,但hibernateTemplate
的 bulkUpdate()不能实现动态的批量删除,即使用bulkUplate时要事先确定下占位符”?“的个数,然后再使用其重载方法 bulkUpdate(queryString, Object[]),此时,Object[]内的元素个数就要跟queryString中的占位符“?”的个数相等,使用十分麻烦,因此可以使用 HibernateCallback回调函数来进行动态批量删除,即可以不考虑要删除元素的个数。具体使用方法如下例:
    public void bulkDelete(final Object[] ids) throws Exception {
        final String queryString = "delete PersistentModel where id in (:ids) ";
        super.execute(new HibernateCallback() {
            public Object doInHibernate(Session session) throws HibernateException, SQLException {
                Query query = session.createQuery(queryString);
                query.setParameterList("ids", ids);
                return query.executeUpdate();
            }
        });
    }
注:标红处的占位符要加上(),否则会抛出语法错误异常。

你可能感兴趣的:(spring,框架,Hibernate)