我正在尝试在 MyBatis-3.2 中制定一个动态查询。该查询涉及一个“IN”子句,其中传递了一个项目列表。 MyBatis 确实通过 foreach 结构支持 'IN' 子句。 该查询将非常频繁地用于可变大小的项目列表。 另外,我不希望 oracle 每次都硬解析这个 sql 查询。
所以,这是我的担忧 -
1)MyBatis中的foreach是硬解析还是软解析?
2)如果是软解析,什么时候将值代入IN子句列表?
3) 如果它被硬解析,是否有解决方法来支持这个用例?在这种情况下,我们能否将列表绑定(bind)到变量以支持软解析?
我在网上搜索了所有这些问题,但找不到任何运气。 对此的任何评论都会有很大帮助。 :)
提前致谢
请您参考如下方法:
据我所知,MyBatis 在将 SQL 发送到数据库处理之前会替换你的 foreach。它首先替换您提供的所有参数并处理所有foreach、if 等标记,然后将完整的SQL 发送到数据库