MyBatis之_在xml中使用批量处理标签删除数据
文章目录
1. Mybatis批量删除
前端传递参数数组
var delIds = ['aaa','bbb','ccc'];
1.Controller
拿到前端的ids数组
/**
* 员工信息批量删除
*/
@RequestMapping("/delEmployees")
@ResponseBody
public String deleteEmpByKeys(@RequestParam("dataList") String[] delIds){
//获取删除的id数组
System.out.println("size:"+delIds.length);
System.out.println(delIds);
int result = employeeService.deleteByKeys(delIds);
if(result > 0 ){
this.setSuccessMessage();
}else{
//this.jsonString = "{success:true,msg:'删除失败!'}";
setJsonString("{success:false,msg:'删除失败!}");
}
return "success";
}
2. service
@Override
public int deleteByKeys(String[] ids) {
// TODO Auto-generated method stub
return employeeMapper.deleteByKeys(ids);
}
3. Mapper
- 参数列表中加了
@Param("ids")
注解,则XXXMapper.xml中,foreach标签中的collection属性值一定要写成@Param注解中的值,如collection="ids"
int deleteByKeys(@Param("ids")String[] ids);
- 参数列表中没有加@Param注解,则collection的值一定要指定为array,即
collection="array"
int deleteByKeys(String[] ids);
4. mapper.xml
注:标签中的parameterType属性 无须指定
- Mapper接口中的方式参数列表中使用了@Param(“ids”)情况
<!-- 批量删除,参数为数组 collection="ids" -->
<delete id="deleteByKeys">
delete from TB_EMPLOYEE
where ID in
<foreach collection="ids" item="id" open="(" separator="," close=")" index="index">
#{id}
</foreach>
</delete>
- Mapper接口中的方式参数列表中
没有使用
@Param(“ids”)情况,则collection="array"
<!-- 批量删除,参数为数组 collection="array" -->
<delete id="deleteByKeys">
delete from TB_EMPLOYEE
where ID in
<foreach collection="array" item="id" open="(" separator="," close=")" index="index">
#{id}
</foreach>
</delete>
5. 传递的是List
foreach语句中, collection属性的参数类型可以使:List、数组、map集合
collection: 必须跟mapper.java中@Param标签指定的元素名一样
item: 表示在迭代过程中每一个元素的别名,可以随便起名,但是必须跟元素中的#{}里面的名称一样。
- index:表示在迭代过程中每次迭代到的位置(下标)
- open:前缀, sql语句中集合都必须用小括号()括起来
- close:后缀
- separator:分隔符,表示迭代时每个元素之间以什么分隔
如果参数Map中有idsList 且 ids=aaa,bbb,ccc,
则Mapper.xml中的foreach标签为的collection必须指定为idsList,如:collection=“idsList ”
具体代码如下:
<select id="dataPackageDefineViewQuery" parameterType="map" resultType="java.util.Map">
select *
from v_idm_datapackage v
where v.test_dataid in
<foreach collection="idsList" open="(" close=")" item="id" index="index" separator=",">
#{id}
</foreach>
</select>