最近项目中循环需要序列生成多个值,但是获取到的值始终只有一个
<select id="selectNextSEQ" resultType="java.lang.Integer">
SELECT PM_HINL_S.NEXTVAL AS ID FROM DUAL
</select>
最后才发现是Mybatis的缓存导致,添加useCache="false" flushCache="true"这样就可以正常取值,而不是重复值。
<select id="selectNextSEQ" resultType="java.lang.Integer" useCache="false" flushCache="true">
SELECT PM_HINL_S.NEXTVAL AS ID FROM DUAL
</select>
这跟Mybatis的缓存机制有关,同一个SqlSession 内执行同一个SQL会从缓存中取值而非重新请求数据库