我一开始想法很简单就是用where id in (这里用foreach遍历出来) 语句来完成。

这个想法是正确的,但是我踩了不知道多少个坑才写出来。

一、mapper层

 /** 根据新闻id删除评论* @Param* @return**/
int deleteCommentByNewsId(ArrayList<Integer> newsIds);

二、mybatis写的sql语句

    <delete id="deleteCommentByNewsId">delete from comment where news_idin<foreach collection="list" item="id" index="index" open="(" close=")" separator=",">#{newsId}</foreach></delete>

collection 这里一开始写的 list 然后遍历的里面写的 #{newsId}

然后果不其然就报错一堆。 给我来了一个这样的错误…

然后我还不知道悔改,粗略看了网上讲的 collection 里面填什么。(细心很重要,找bug要有耐心)

因为我的是 ArrayList ,就填了一个 list 进去 错了之后我还试过网上讲的array 都错了 就不贴出来啦。

  <delete id="deleteCommentByNewsId">delete from comment where news_idin<foreach collection="list" item="id" index="index" open="(" close=")" separator=",">#{newsId}</foreach></delete>

尽量保持平静中(实则心中各种草泥马在奔跑)

然后继续找大佬博客。最后的最后 我终于学会啦。

collection 里面填的是 参数名。 心里苦啊。

最后的语句是这样的

        <delete id="deleteCommentByNewsId">delete from comment where news_idin<foreach collection="newsIds" item="id" index="index" open="(" close=")" separator=",">#{id}</foreach></delete>

三、详解 foreach 标签及其属性

最后来总结一下这个 foreach。

foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。

foreach元素的属性主要有 item,index,collection,open,separator,close。

item表示集合中每一个元素进行迭代时的别名,
index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置,
open表示该语句以什么开始,
separator表示在每次进行迭代之间以什么符号作为分隔 符,
close表示以什么结束。

这就是我所知道的一点点东西。希望能够对大家有帮助。

四、自言自语

许多知识学的不踏实,并且不去用,又不去复习,我想它是真的会慢慢就离开我们的。

学以致用。

温故而知新。

mybatis做批量删除时写SQL语句时遇到的问题相关推荐

  1. iif在mysql能用不_在写SQL语句时,你们会经常用IIF(ISNULL(字段))吗

    你的位置: 问答吧 -> .NET -> 问题详情 在写SQL语句时,你们会经常用IIF(ISNULL(字段))吗 我是个新手,刚写好一个东西,现在咨询个经验的问题.在写SQL语句时,你们 ...

  2. ACCESS中写SQL语句时尽量把表名和字段名用中括号括起来

    ACCESS中写SQL语句时尽量把表名和字段名用中括号括起来,一般都要写成: [TableName].FieldName,否则较长的中文名表名可能会被不识别.

  3. Spring Boot进阶(33):Mybatis 中xml文件写sql语句时大于、大于等符号转义 | 超级详细,建议收藏

    1. 前言

  4. 使用JDBC连接数据库时,SQL语句中提示:Unable to resolve table...(原因:数据源未配置)

    文章目录 方法一.添加数据源 方法二.输入全限定表名 在 IDEA 中的 Java 代码中写 SQL 语句时,出现如下图所示的错误提示: 方法一.添加数据源 要解决上面红色警告的问题,只需要添加数据源 ...

  5. mysql 批量添加字段前缀_MySQL中批量前缀表的sql语句

    1.批量删除前缀表sql语句 先查询生成需要操作的表 Select CONCAT( 'drop table ', table_name, ';' ) FROM information_schema.t ...

  6. Mybatis 如何批量删除数据

    Mybatis如何批量删除数据 本期以最常用的根据id批量删除数据为例: 接口设计1:List类型单参数 Integer deleteByIds(List<Integer> ids); 接 ...

  7. SQL语句你会写了吗?一题教你轻松对付数据库期末考试(写SQL语句的分必拿哦)

    现有下列几个表,按题目要求写出相关的SQL语句 第一部分: # 1. 查询所在城市为"北京"的所有工程号和工程名. select JNO,JNAME from j where CI ...

  8. python写sql语句_Python操作文件模拟SQL语句功能

    一.需求 当然此表你在文件存储时可以这样表示 1,Alex Li,22,13651054608,IT,2013-04-01 现需要对这个员工信息文件,实现增删改查操作 1. 可进行模糊查询,语法至少支 ...

  9. 程序员老鸟写sql语句的经验之谈

    程序员老鸟写sql语句的经验之谈 做管理系统的,无论是bs结构的还是cs结构的,都不可避免的涉及到数据库表结构的设计,sql语句的编写等.因此在开发系统的时候,表结构设计是否合理,sql语句是否标准, ...

最新文章

  1. eclipse设置代码自动保存步骤
  2. golang 获取 进程 名称 id
  3. 2018 Multi-University Training Contest 4 Problem E. Matrix from Arrays 【打表+二维前缀和】
  4. 站在我个人的角度上来说。。。。。
  5. python利用集合的无重复性_利用Python程序完成ABAQUS中的一些重复性操作
  6. django缓存优化(一)
  7. 【学习】从零开始的Android音视频开发(2)——MediaPlayer的状态和创建过程
  8. Java集成openCV实现图片背景切换
  9. 技术人最基本投资建议
  10. 遥感影像内部“白点”去除技巧
  11. cmpp 免提短信(闪信)
  12. 【Fusion】Conic Modeling
  13. 前端学习——VUE组件基础
  14. 第三章-信道与信道容量(二)
  15. 音视频常见术语和接口收集
  16. 查看java进程内存占用情况
  17. 入行测试已经4年了 ,进华为后迷茫了3个月,做完这个项目我决定离职....
  18. Windows找不到servicemsc文件怎么办?
  19. 成事的人,往往是谦逊的
  20. 地址转换技术 NAT

热门文章

  1. 重新学习一下ABAP里面的逻辑数据库
  2. 与小熊、新宝不同的北鼎,仍不是小家电的出路
  3. 逐鹿东南亚,Lazada增长飞轮再加速
  4. 澳优、伊利、君乐宝、贝因美等入局,羊奶能否迎来“牛市”?
  5. 三类MySQL_mysql 常用的三类函数
  6. ad采集 cube配置 dma_【技术技巧】 使用MCC数据采集设备获取模拟波形
  7. python给函数设置超时时间_在 Linux/Mac 下为Python函数添加超时时间
  8. java 多线程 任务队列_Java并发编程线程池任务队列
  9. 仿射密码介绍以及解题脚本
  10. Python动态变量名定义与调用