我们可以使用MyBatis的OGNL表达式语言的split函数。
具体来说,我们可以在XML中使用以下语法:
<select id="someQuery" parameterType="String" resultType="...">
SELECT * FROM some_table
WHERE some_column IN
<foreach item="item" index="index" separator="," open="(" close=")" collection="#{str.split(',')}">
#{item}
</foreach>
</select>
其中,parameterType为String类型,表示传入的参数是一个由逗号分隔的字符串,resultType可以根据你查询的结果类型自定义。
在这段XML中,我们使用了OGNL表达式中的split函数把传入的字符串分割成一个字符串数组,然后使用foreach遍历数组中的每个元素,把它们用逗号分隔后拼接成一个IN语句。
举个例子,如果我们调用这个查询,传入参数"1,2,3",实际执行的SQL语句会是:
SELECT * FROM some_table
WHERE some_column IN (“1”, “2”, “3”)
这样就可以把字符串类型的入参转换为IN关键字所需的类型了。