使用hibeinateTemplate进行批量删除的两种方法
2011-08-24 10:35
561 查看
使用spring + hibernate框架中,一般使用hibernateTemplate对数据进行操作,但是使用hibernateTemplate进行批量删除没有hibernate那么方便,经过自己查找资料和尝试,有两种比较常用的方法。(自己也是初学框架,在这里献丑了!)
1.使用hibernateTemplate中的deleteAll方法,具体怎么做看代码吧(只贴核心部分)
Action类
private String[] ids ;
public String batchDelete() throws Exception{
List<News> idlist = new ArrayList<News>() ;
for(String id:ids){
News news = new News() ;
news.setId(Integer.parseInt(id)) ;
idlist.add(news) ;
}
newsDAO.batchDelete(idlist) ;
}
public String[] getIds() {
return ids;
}
public void setIds(String[] ids) {
this.ids = ids;
}
DAOImpl类
public void batchDelete(List<News> idlist) {
hibernateTemplate.deleteAll(idlist) ;
}
这种方法进行删除时,每删除一条会发送一条sql语句。
2.使用 HibernateCallback回调函数
Action类
private String ids ;
public String batchDelete() throws Exception{
newsDAO.batchDelete(ids) ;
}
public String getIds() {
return ids;
}
public void setIds(String ids) {
this.ids = ids;
}
DAOImpl类
public void batchDelete(final String ids) {
ht.execute(new HibernateCallback(){
public Object doInHibernate(Session session) throws HibernateException, SQLException {
String hql = "delete from News as news where news.id in("+ids+")" ;
Query q = session.createQuery(hql) ;
return q.executeUpdate() ;
}
});
}
使用这种就不用将接收的id放在list集合里面,唯一的缺陷就是要回调,本人还是比较推荐第二种。注:在前台页面是使用的checkbox。
1.使用hibernateTemplate中的deleteAll方法,具体怎么做看代码吧(只贴核心部分)
Action类
private String[] ids ;
public String batchDelete() throws Exception{
List<News> idlist = new ArrayList<News>() ;
for(String id:ids){
News news = new News() ;
news.setId(Integer.parseInt(id)) ;
idlist.add(news) ;
}
newsDAO.batchDelete(idlist) ;
}
public String[] getIds() {
return ids;
}
public void setIds(String[] ids) {
this.ids = ids;
}
DAOImpl类
public void batchDelete(List<News> idlist) {
hibernateTemplate.deleteAll(idlist) ;
}
这种方法进行删除时,每删除一条会发送一条sql语句。
2.使用 HibernateCallback回调函数
Action类
private String ids ;
public String batchDelete() throws Exception{
newsDAO.batchDelete(ids) ;
}
public String getIds() {
return ids;
}
public void setIds(String ids) {
this.ids = ids;
}
DAOImpl类
public void batchDelete(final String ids) {
ht.execute(new HibernateCallback(){
public Object doInHibernate(Session session) throws HibernateException, SQLException {
String hql = "delete from News as news where news.id in("+ids+")" ;
Query q = session.createQuery(hql) ;
return q.executeUpdate() ;
}
});
}
使用这种就不用将接收的id放在list集合里面,唯一的缺陷就是要回调,本人还是比较推荐第二种。注:在前台页面是使用的checkbox。
相关文章推荐
- 使用简单的方法进行批量删除数据
- HashMap的遍历两种常用的方法,那就是使用keyset及entryset来进行遍历
- 使用 SQL Server 2008 数据类型-xml 字段类型参数进行数据的批量选取或删除数据
- HashMap的遍历两种常用的方法,那就是使用keyset及entryset来进行遍历
- 批量删除wps文档里的回车符的方法!WPS使用技巧分享!
- 1008: 级数求和(附:在使用for循环里的表达式二进行判断时的注意事项【两种求解方法】)
- ASP下批量删除数据的两种方法
- 使用JDBC进行批处理(两种方法)
- 使用批处理按要求批量删除文件夹方法汇总
- HashMap的遍历两种常用的方法,那就是使用keyset及entryset来进行遍历
- python下需要对指定格式的文件进行批量删除的方法
- 使用标记方式entry方法进行删除和修改
- 使用 SQL Server 2008 数据类型-xml 字段类型参数进行数据的批量选取或删除数据
- 2004-8-16+ 使用DataGird和DataSet进行批量删除
- 使用 iisweb.vbs 删除网站的方法(支持批量删除)
- mybatis里面批量删除的使用方法:
- 批量删除记录的两种方法
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-演示ORM的批量删除与更新
- 使用批处理按要求批量删除文件夹方法汇总
- ASP.NET Gridview 中使用checkbox删除的方法(两种)