mybatis做批量删除时写SQL语句时遇到的问题
我一开始想法很简单就是用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语句时遇到的问题相关推荐
- iif在mysql能用不_在写SQL语句时,你们会经常用IIF(ISNULL(字段))吗
你的位置: 问答吧 -> .NET -> 问题详情 在写SQL语句时,你们会经常用IIF(ISNULL(字段))吗 我是个新手,刚写好一个东西,现在咨询个经验的问题.在写SQL语句时,你们 ...
- ACCESS中写SQL语句时尽量把表名和字段名用中括号括起来
ACCESS中写SQL语句时尽量把表名和字段名用中括号括起来,一般都要写成: [TableName].FieldName,否则较长的中文名表名可能会被不识别.
- Spring Boot进阶(33):Mybatis 中xml文件写sql语句时大于、大于等符号转义 | 超级详细,建议收藏
1. 前言
- 使用JDBC连接数据库时,SQL语句中提示:Unable to resolve table...(原因:数据源未配置)
文章目录 方法一.添加数据源 方法二.输入全限定表名 在 IDEA 中的 Java 代码中写 SQL 语句时,出现如下图所示的错误提示: 方法一.添加数据源 要解决上面红色警告的问题,只需要添加数据源 ...
- mysql 批量添加字段前缀_MySQL中批量前缀表的sql语句
1.批量删除前缀表sql语句 先查询生成需要操作的表 Select CONCAT( 'drop table ', table_name, ';' ) FROM information_schema.t ...
- Mybatis 如何批量删除数据
Mybatis如何批量删除数据 本期以最常用的根据id批量删除数据为例: 接口设计1:List类型单参数 Integer deleteByIds(List<Integer> ids); 接 ...
- SQL语句你会写了吗?一题教你轻松对付数据库期末考试(写SQL语句的分必拿哦)
现有下列几个表,按题目要求写出相关的SQL语句 第一部分: # 1. 查询所在城市为"北京"的所有工程号和工程名. select JNO,JNAME from j where CI ...
- python写sql语句_Python操作文件模拟SQL语句功能
一.需求 当然此表你在文件存储时可以这样表示 1,Alex Li,22,13651054608,IT,2013-04-01 现需要对这个员工信息文件,实现增删改查操作 1. 可进行模糊查询,语法至少支 ...
- 程序员老鸟写sql语句的经验之谈
程序员老鸟写sql语句的经验之谈 做管理系统的,无论是bs结构的还是cs结构的,都不可避免的涉及到数据库表结构的设计,sql语句的编写等.因此在开发系统的时候,表结构设计是否合理,sql语句是否标准, ...
最新文章
- eclipse设置代码自动保存步骤
- golang 获取 进程 名称 id
- 2018 Multi-University Training Contest 4 Problem E. Matrix from Arrays 【打表+二维前缀和】
- 站在我个人的角度上来说。。。。。
- python利用集合的无重复性_利用Python程序完成ABAQUS中的一些重复性操作
- django缓存优化(一)
- 【学习】从零开始的Android音视频开发(2)——MediaPlayer的状态和创建过程
- Java集成openCV实现图片背景切换
- 技术人最基本投资建议
- 遥感影像内部“白点”去除技巧
- cmpp 免提短信(闪信)
- 【Fusion】Conic Modeling
- 前端学习——VUE组件基础
- 第三章-信道与信道容量(二)
- 音视频常见术语和接口收集
- 查看java进程内存占用情况
- 入行测试已经4年了 ,进华为后迷茫了3个月,做完这个项目我决定离职....
- Windows找不到servicemsc文件怎么办?
- 成事的人,往往是谦逊的
- 地址转换技术 NAT
热门文章
- 重新学习一下ABAP里面的逻辑数据库
- 与小熊、新宝不同的北鼎,仍不是小家电的出路
- 逐鹿东南亚,Lazada增长飞轮再加速
- 澳优、伊利、君乐宝、贝因美等入局,羊奶能否迎来“牛市”?
- 三类MySQL_mysql 常用的三类函数
- ad采集 cube配置 dma_【技术技巧】 使用MCC数据采集设备获取模拟波形
- python给函数设置超时时间_在 Linux/Mac 下为Python函数添加超时时间
- java 多线程 任务队列_Java并发编程线程池任务队列
- 仿射密码介绍以及解题脚本
- Python动态变量名定义与调用