ibatis2 中select中的动态查询
SELECT
            LOGDATE   logdate,
            <dynamic>
                <isEqual property="isMember" compareValue="true" close=",">
                           NAME  name
                </isEqual>
            </dynamic>
                         AGE    age
        FROM t

 如题,在select中使用动态查询,isMember是Boolean类型的,结果就是isMember为true的时候还是选不到name这一列.

这样写有错吗?

xm415
苏摩 正如上面所说,缓存了第一次查过之后使用的resultMap,不会考虑其他字段. 改为<select id="***" parameterClass="***" resultClass="***" remapResults="true"> 意思就是每次都会重新生成新的resultMap. 参考链接:http://www.iteye.com/topic/89424
7 年多之前 回复

3个回答

加一个remapResults="true",具体作用请谷歌,主要是因为缓存了结果集获取的逻辑过程,第一次查过以后,ibatis一直认为只有两个字段,根本不会考虑去取第3个字段

另外你可以去掉dynamic这个标签,直接用里面的isequal就行了

xm415
苏摩 正如上面所说,缓存了第一次查过之后使用的resultMap,不会考虑其他字段. 改为<select id="***" parameterClass="***" resultClass="***" remapResults="true"> 意思就是每次都会重新生成新的resultMap. 参考链接:http://www.iteye.com/topic/89424 2013-03-19 17:17
7 年多之前 回复

什么数据库,为什么字段名要写两遍?

xm415
苏摩 mysql,那是ibatis中的sqlMap。。。
7 年多之前 回复

lz是想isMember为true的数据吧?

该成
SELECT
LOGDATE logdate,
NAME name,
AGE age
from t


isMember = true

tianma630
tianma630 你见过 查询结果数据有些是2列、有些是3列的吗 可以换个方法 可以把isMember为false的name置为空 SELECT LOGDATE logdate, case when isMember = true then NAME else null end name, AGE age from t
7 年多之前 回复
xm415
苏摩 不是啊,我是想根据isMember的值来决定是不是选出name列
7 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐