首页 > 解决方案 > 在 mybatis 中遍历字符串

问题描述

我的字符串参数是这样的:'(1,2,3,4)'

我想迭代这个

SELECT * FROM table WHERE value IN #{myparameter}

我怎样才能做到这一点?

标签: mybatis

解决方案


您可以像这样将值逐字放入查询中:

SELECT * FROM table WHERE value IN ${myparameter}

但请注意,这不使用准备好的语句参数。它具有不使用准备好的语句的所有缺点,即:它不是类型保存、易受 SQL 注入、需要转义等

您最好将字符串转换为列表,然后以类型安全的方式生成查询:

SELECT *
FROM table
WHERE value IN
<foreach item="item" index="index" collection="myparameter"
         open="(" separator="," close=")">
    #{item}
</foreach>

myparameter应该是列Collection的任何类型value


推荐阅读