mybatis的foreach标签语法报错的解决
foreach标签语法报错
开发中因为方便复制了其它的foreach标签,但是在执行时,一直报sql语法错误,没办法自己重写一遍foreach标签,
执行成功.
但是,我还是耐心去找到问题所在:

发现下面的标签后面有一段空字符,注意:前面带点的空格位空白字符,后面两点之间的空格为空字符,至于为什么复制来的标签为什么会带有空字符,而且空字符也带入了sql中,引起sql编译报错.这一点我还不太清楚,,,反正我手打不出空字符.
网上查了一下,说是什么\0的时候就是空字符,但是为什么复制的时候会出现呢?
网上说的什么去掉foreach的前后空格,在我这不太适用,这不是空格,这就是空字符.
动态sql中foreach标签使用
foreach标签主要用于构建in条件,他可以在sql中对集合进行迭代。如下:
<delete id="deleteBatch">
delete from user where id in
<foreach collection="array" item="id" index="index" open="(" close=")" separator=",">
#{id}
</foreach>
</delete>我们假如说参数为---- int[] ids = {1,2,3,4,5} ----那么打印之后的SQL如下:
delete form user where id in (1,2,3,4,5)
释义:
collection:collection属性的值有三个分别是list、array、map三种,分别对应的参数类型为:List、数组、map集合,我在上面传的参数为数组,所以值为arrayitem:表示在迭代过程中每一个元素的别名index:表示在迭代过程中每次迭代到的位置(下标)open:前缀close:后缀separator:分隔符,表示迭代时每个元素之间以什么分隔
我们通常可以将之用到批量删除、添加等操作中。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Spring Boot访问静态资源css/js,你真的懂了吗
在搭建springboot时经常需要在html中访问一些静态资源,很多朋友不清楚如何在 Spring Boot中访问静态资源,本文给大家带来两种解决方案,感兴趣的朋友跟随小编一起看看吧2021-05-05
servlet的url-pattern匹配规则详细描述(小结)
在利用servlet或Filter进行url请求的匹配时,很关键的一点就是匹配规则。这篇文章主要介绍了servlet的url-pattern匹配规则详细描述(小结),非常具有实用价值,需要的朋友可以参考下2018-07-07
SpringCloud Eureka Provider及Consumer的实现
这篇文章主要介绍了SpringCloud Eureka 提供者及调用者的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2019-10-10


最新评论