應用程式獲取Mybatis中配置的執行SQL
獲取到Mybatis中配置的具體SQL,而且是在程式執行時已經將引數替換完之後的完整的SQL。
舉個例子,sqlMap中配置瞭如下sql:
<select id="queryVenderDzDetailTotalFee" resultType="java.lang.Long" parameterType="java.util.HashMap"> select * from lottery_order_es_index <where> <include refid="_query_vender_dz_detai_condition"/> </where> </select> <sql id="_query_vender_dz_detai_condition"> <if test="issueId!=null"> and issueId = ${issueId} </if> <if test="orderId!=null"> and orderId = ${orderId} </if> <if test="awardStatus!=null"> and awardStatus = ${awardStatus} </if> <if test="settleStatus!=null"> and settleStatus = ${settleStatus} </if> <if test="buyTimeStart != null and buyTimeStart!='' "> and buyTime >= '${buyTimeStart}' </if> <if test="buyTimeEnd != null and buyTimeEnd!=''"> and buyTime <= '${buyTimeEnd}' </if> and orderStatus = 10 AND yn = 1 </sql>
獲取到的 mybatis 執行的sql為:
select * from lottery_order_es_index where orderId=100000 and orderStatus = 10 and yn=1
核心程式碼為:
SqlSessionFactory.getConfiguration().getMappedStatement("TreasureOrder.queryVenderDzDetailTotalFee").getBoundSql(map).getSql();