MyBatis之在mapper.xml文件中使用批量处理标签删除数据

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

  1. 参数列表中加了@Param("ids")注解,则XXXMapper.xml中,foreach标签中的collection属性值一定要写成@Param注解中的值,如collection="ids"
int deleteByKeys(@Param("ids")String[] ids);
  1. 参数列表中没有加@Param注解,则collection的值一定要指定为array,即collection="array"
int deleteByKeys(String[] ids);

4. mapper.xml

注:标签中的parameterType属性 无须指定

  1. 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>
  1. 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>
  • 15
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值