MyBatis 动态SQL foreach 循环拼接separator使用问题
在使用mybatis动态SQL的时候,遇到了一个疑惑:
collection集合中集合长度为0和1的问题,是否会导致sql语句报错
于是测试了一下(0肯定会报错),发现集合长度为1的时候是不会报错的,为什么会觉得1会报错?因为有separator分隔符
究竟这个分隔符是在什么时候插入的,如果是在遍历第一次集合的时候插入,那么整个sql语句就会多一个逗号,反之,sql语句是正确的
发现这是可以测试成功的,也就是说,在集合为1的情况下,动态sql在底层的时候应该会自动帮我们把separator去掉,保证sql语句不报错;
又或者是说,在集合大于1的情况下才会激活separator这个分隔符的功能。