MyBatis之_在xml中使用批量处理标签删除数据
文章目录
- MyBatis之_在xml中使用批量处理标签删除数据
- 1. Mybatis批量删除
- 1.Controller
- 2. service
- 3. Mapper
- 4. mapper.xml
- 5. 传递的是List<String>
1. Mybatis批量删除
前端传递参数数组
var delIds = ['aaa','bbb','ccc'];
1.Controller
拿到前端的ids数组
/*** 员工信息批量删除*/@RequestMapping("/delEmployees")@ResponseBodypublic 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
@Overridepublic int deleteByKeys(String[] ids) {// TODO Auto-generated method stubreturn 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_EMPLOYEEwhere 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_EMPLOYEEwhere 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 vwhere v.test_dataid in<foreach collection="idsList" open="(" close=")" item="id" index="index" separator=",">#{id}</foreach></select>