摘自项目中的Mybatis的批量删除。项目框架spring MVC和Mybatis,另外还用了easyUI,希望对你有所帮助!
在网上查了很多次,改了好长时间才跑通,所以我一自己的例子粘过来,希望能节省大家的时间。
【JSP】
jsp中主要是向action中传递了一个id的字符串,并且是以逗号分隔的。(看不懂没关系)
function deletevideo(){
var rows = jQuery('#dg').datagrid('getChecked');
if(rows.length==0){
alert("请至少选择一项");
return false;
}
var ids= [];
for(var i=0;i<rows.length;i++){
ids.push(rows[i].vid);
}
var ids1 = ids.join(',');
jQuery.messager.confirm('确认','确定要删除?',function(r){
if(r){
jQuery.post(
'<%=path %>/video/deletevideo.do',
{id:ids1},
function(data){
jQuery.messager.show({
title: '提示',
msg: '删除成功!',
timeout: 2000,
showType: 'slide'
});
jQuery('#dg').datagrid('reload');
jQuery('#dg').datagrid('clearSelections');
}
);
}
});
}
【action】
action中用的是注解,接收字符串并未做处理 ,service调用删除的方法。
@RequestMapping(value="/deletevideo")
@ResponseBody
public String deletevideo(HttpServletRequest request){
String ids = request.getParameter("id");
System.out.println("====================="+ids);
try {
int i=service.deleteById(ids);
if(i>=1){
return "success";
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
【service】
对字符串做了处理,为了dao层的使用。把字符串id放到集合中。
public int deleteById(String ids){
String[] split = ids.split(",");
List idList= new ArrayList();
for(int i=0;i<split.length;i++){
idList.add(Integer.parseInt(split[i]));
}
return dao.deleteById(idList);
}
【dao】
用了<foreach>标签
主要是用foreach标签,它可以在SQL语句中进行迭代一个集合。
foreach元素的属性主要有 item,index,collection,open,separator,close。
item表示集合中每一个元素进行迭代时的别名,(这个就别改了)item="item" 和#{item}是对应的复制我的就行了
index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置,(这个也别改,照写就行)
open表示该语句以什么开始,
separator表示在每次进行迭代之间以什么符号作为分隔 符,
close表示以什么结束,
collection="list"(这个也别改,照写就行)
在使用foreach的时候最关键的也是最容易出错的就是collection属性,该属性是必须指定的。
1.如果传入的是单参数且参数类型是一个List的时候,collection属性值为list
2.如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array