SqlMapExecutorDelegate delegate=((ExtendedSqlMapClient)(getSqlMapClientTemplate().getSqlMapClient())).getDelegate();
MappedStatement ms = delegate.getMappedStatement(sqlName); 
Sql sql=ms.getSql();
String exmSql = sql.getSql(null, conditions); //获得运行期sqlconditions是个map
值为:{minSize=0, groupID=103081, maxSize=10, rows=10, sort=null, page=1, colStr=R_216920,R_216919,R_216918,R_216917,R_216911,R_216915,R_216914,R_216913,R_216912,R_216916, order=null, tableName=mi_boss.MST_PRJADM_CUST_LIST_103081}ibatis中的sql为:
<select id="queryR_GroupList" resultClass="java.util.HashMap"
parameterClass="java.util.Map" remapResults="true">
SELECT $colStr$
        FROM $tableName$
        <dynamic prepend="">
<isNotEmpty prepend="" property="codeStr">
$codeStr$
</isNotEmpty>
        where 1=1
         <isNotEmpty prepend="and" property="localCode">
local_code = '$localCode$'
</isNotEmpty>
<isNotEmpty prepend="and" property="monthNo">
billing_cycle = #monthNo#
</isNotEmpty>
</dynamic>
        limit #rows:DECIMAL# offset #minSize:DECIMAL#
</select>不知道为什么,获取那个sql时总报空指针....
我试了其他的sql能获取出来。
这个sql查询也查出来,但是就是获取运行期sql报空指针
这是为什么啊??/难道获取运行期sql还有什么其他的限制吗????
在线等。。急/。/

解决方案 »

  1.   

    补充一下,发现个规律
    凡是出现那种动态的sql 都会取不出来,报空指针
    包含
    <isNotEmpty prepend="and" property="isCheck">
    t.IS_EVENT = $isCheck$
    </isNotEmpty>
    像这种判断的
    就会报。
    其他的没有包含的就不会。
    有兄弟姐妹也碰到过这种问题的嘛??
      

  2.   

    你先打IBAITS的DEBUG日志打开!
    我正常用的代码是:sqlMap.queryForList("loadSaleHistory")loadSaleHistory:为配置文件中ID
    sqlMAP为SqlMapClient类型的实例