当前位置: 首页 > news >正文

MyBatis<foreach>标签的用法与实践

foreach标签简介

在这里插入图片描述

实践

demo1
简单的一个批量更新,这里传入了一个List类型的集合作为参数,拼接到 in 的后面 ,来实现一个简单的批量更新

<update id="updateVislxble" parameterType="java.util.List">update models set visible =0where llm_idIN<foreach collection="allVisible" item="visible" open="(" separator="," close=")">#{visible}</foreach></update>
  • collection=“allVisible”,allVisible代表传入的集合
  • item=“visible” ,visible代表集合的每一个元素
  • open=“(” 代表以( 开头
  • separator=“,” 代表以“,”分隔,
  • close=“)” 代表以“)”结束

本质上这里是个拼接,所有要保证这里list不为空,不然会报错

demo2
这里还是个批量更新,但是传入的参数多了起来,这里是的入参是个map,并且里面这个status是一个List类型的

  <select id="getModelEvaluateTaskPage" parameterType="java.util.Map" resultType="com.test.test">select * from evaluate_tasks t<where><if test="status !=null">and  t.status  in<foreach item="item" index="index" collection="status"open="(" separator="," close=")">#{item}</foreach></if><if test="taskName !=null and taskName!=''">and  t.task_name like concat('%',#{taskName},'%')</if><if test="startTime !=null and endTime!=null">and  t.created_time between #{startTime} and #{endTime}</if>and t.user_id = #{userId}</where>order by t.created_time ${sort}</select>

demo3
这里的场景传入了一个list,里面是多个对象,根据对象的属性A去更新属性B,这里额外使用了 case when then

 <update id="bitchUpdateStatueById" parameterType="java.util.List">UPDATE evaluate_tasksSET status = CASE service_name<foreach collection="updates" item="update" separator=" ">WHEN #{update.serviceName} THEN #{update.status}</foreach>END,updated_time = CASE service_name<foreach collection="updates" item="update" separator=" ">WHEN #{update.serviceName} THEN #{update.endTime}</foreach>ENDWHERE service_name IN<foreach collection="updates" item="update" open="(" separator="," close=")">#{update.serviceName}</foreach></update>
http://www.lryc.cn/news/449817.html

相关文章:

  • R语言Shiny包新手教程
  • [大象快讯]:PostgreSQL 17 重磅发布!
  • CHI trans--Home节点发起的操作
  • Rust和Go谁会更胜一筹
  • 记HttpURLConnection下载图片
  • 物联网实训室建设的必要性
  • 初识C语言(四)
  • 产品架构图:从概念到实践
  • smartctl 命令:查看硬盘健康状态
  • BBR 为什么没有替代 CUBIC 成为 Linux 内核缺省算法
  • Git忽略规则原理和.gitignore文件不生效的原因和解决办法
  • MySQL-数据库设计
  • Unity开发绘画板——04.笔刷大小调节
  • ./mnt/container_run_medium.sh
  • 数学建模研赛总结
  • 通信工程学习:什么是TCF技术控制设施
  • stm32 bootloader跳转程序设计
  • 科技赋能环保:静电与光解技术在油烟净化中的卓越应用
  • FCA-FineBI试卷答案
  • Spring - @Import注解
  • 新能源汽车储充机器人:能源高效与智能调度
  • 【Linux网络】详解TCP协议(2)
  • STM32DMA学习日记
  • 【高性能内存池】page cache 5
  • Vue 3 魔法揭秘:CSS 解析与 scoped 背后的奇幻之旅
  • 如何获取钉钉webhook
  • 网页WebRTC电话和软电话哪个好用?
  • MySQL Mail服务器集成:如何配置发送邮件?
  • 【Rockchip系列】官方函数:imcopy
  • Matlab实现鲸鱼优化算法优化回声状态网络模型 (WOA-ESN)(附源码)