[轉]mybatis如何直接 執行傳入的任意sql語句 並按照順序取出查詢的結果集


原文地址:https://www.cnblogs.com/wuyun-blog/p/5769096.html

需求:

1.直接執行前端傳來的任何sql語句,parameterType="String",

2.對於任何sql語句,其返回值類型無法用resultMap在xml文件里配置或者返回具體的bean類型,因此設置resultType="java.util.Map",但是Map並不保證存入取出順序一致,

因此設置resultType="java.util.LinkedHashMap",為保證查詢的字段值有序(存入與取出順序一致)所以采用LinkedHashMap。

3.當返回值為LinkedHashMap時,表中存儲的null值並不會存入Map中,因此還要在mybatis配置文件中增加如下配置:

<settings>
<setting name="callSettersOnNulls" value="true"/>
</settings>

 

mapper的接口方法:List<LinkedHashMap<String, Object>> superManagerSelect(String sql);

 

相匹配的xml文件:

<select id="superManagerSelect" parameterType="String" resultType="java.util.LinkedHashMap">
${sql}
</select>

這樣配置時,會出現:there no getter sql in java.lang.String 的異常,因此sql改成value,便不會報錯。

<select id="superSelect" parameterType="String" resultType="java.util.LinkedHashMap"> 
${value} 
</select>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM