MyBatis 多个条件使用Map传递参数进行批量删除

目录

1、使用场景

2、代码实现

3、实现结果展现

4、参考文章:


1、使用场景

     因为项目需要针对资源文件(视频、音频、文档),编辑时候可能出现以下3种情况:

    实现的项目效果图:

    1.1、删除多个已经选择的标签(与本次文章相关内容)

   1.2、新增标签(选择已有标签作为新增,输入新的标签作为新增的)

    因为本业务场景之中与此文章相关的内容 重点介绍一下如何,使用Map<String,Object> 参数传递过个参数进行批量删除 资源标签关系表记录信息。   

2、代码实现

    由于此功能需要在取消选择当前资源标签之中的,以前已经选择过的标签,需要传递两个参数进行删除【资源标签关系记录表】之中的记录,主要有资源id(resourceId),多个标签的ids(deleteTagIdList)。具体代码如下所示:

Java接口定义及MyBatis语句定义代码

/**
 * 删除资源标签关系表之中相关信息
 * @param deleteTagRelationParams
 * @return
 */
int deleteBatchEnclosureTagRelationList(Map<String, Object> deleteTagRelationParams);

<!-- 批量删除 课程资源标签 -->
	<delete id="deleteBatchEnclosureTagRelationList"  parameterType="hashmap">
		 delete from course_enclosure_tag where resource_id=#{resourceId} AND tag_id in 
        <foreach collection="deleteTagIdList" item="tagId" separator="," open="(" close=")">
            #{tagId}
        </foreach>
	</delete>

具体业务操作Java代码

if(deleteTagList.size()>0){
	List<Long> deleteTagIdList=new ArrayList<Long>();
	for(Map<String, Object> itemMap:deleteTagList) {
		Long delTagId=Long.parseLong(itemMap.get("id").toString());
		deleteTagIdList.add(delTagId);
	}
	Map<String, Object> deleteTagRelationParams=new HashMap<String, Object>();
	deleteTagRelationParams.put("resourceId", courseEnclosure.getId());
	deleteTagRelationParams.put("deleteTagIdList", deleteTagIdList);
	deleteBatchEnclosureTagRelationList(deleteTagRelationParams);
}

注意事项:deleteTagIdList 参数的List<Long>类型一定要和接口函数之中的类型一致;本人定义接口参数

Long delTagId=Long.parseLong(itemMap.get("id").toString());
// 必须是Long定义类型List 如果使用long定义后端无法执行的

long delTagId=Long.parseLong(itemMap.get("id").toString());

3、实现结果展现

4、参考文章:

mybatis 批量操作

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis 支持批量更新操作,可以通过 `update` 标签中的 `foreach` 元素来实现。 假设有一个 `User` 实体类,包含 `id` 和 `name` 属性,我们要批量更新多个用户的姓名,可以按照以下步骤操作: 1. 在 Mapper.xml 文件中添加一个 `update` 标签,设置 `id` 和 `parameterType` 属性: ```xml <update id="batchUpdateUser"> <foreach collection="users" item="user" separator=";"> update user set name = #{user.name} where id = #{user.id} </foreach> </update> ``` 2. 在 Java 代码中,调用 `SqlSession` 的 `update` 方法,Mapper.xml 中定义的 `id` 和一个包含多个 `User` 对象的集合: ```java List<User> userList = new ArrayList<>(); User user1 = new User(1, "Jack"); User user2 = new User(2, "Rose"); userList.add(user1); userList.add(user2); try (SqlSession sqlSession = sqlSessionFactory.openSession()) { int rows = sqlSession.update("batchUpdateUser", Collections.singletonMap("users", userList)); sqlSession.commit(); } ``` 在 Mapper.xml 文件中,`foreach` 元素的 `collection` 属性指定了入的集合变量名,`item` 属性指定了在循环中使用的变量名,`separator` 属性指定了每个 SQL 语句之间的分隔符。 在 Java 代码中,`Collections.singletonMap` 方法将一个包含集合变量的 Map 对象作为参数入,`SqlSession` 会自动将 Map 中的键值对递给 Mapper.xml 中的 `foreach` 元素。在执行完 `update` 方法后,需要手动调用 `commit` 方法提交事务,否则更新操作不会生效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值