SELECT
LOGDATE logdate,
<dynamic>
<isEqual property="isMember" compareValue="true" close=",">
NAME name
</isEqual>
</dynamic>
AGE age
FROM t
如题,在select中使用动态查询,isMember是Boolean类型的,结果就是isMember为true的时候还是选不到name这一列.
经过排查得知,生成的sql是正确的,但是resultMap的head是没有NAME name这一列的.
ibatis的sql和resultMap是分开的,先根据sqlMap生成一个resultMap,然后把查询的结果再映射到resultMap中
虽然查询出来了结果,但是没有地方放数据.
具体为什么生成的resultMap没有那一列,带确认...
查出原因了,确认结果:
ibatis会缓存了第一次查过之后使用的resultMap,第二次查询的时候便不会考虑其他字段(即上面的NAME列).
改为<select id="***" parameterClass="***" resultClass="***" remapResults="true">
意思就是每次都会重新生成新的resultMap.
参考链接:http://www.iteye.com/topic/89424