記一筆MyBatis的坑


記一筆MyBatis的坑

1、sql查詢concat()連接函數xml運行查詢亂碼

1 select concat(CONVERT(round(count(case when sq.LOANOVERDUE = 'Y' then 1 else null end) / count(1) * 100, 2), char)'%') bll
2 FROM fact_dkxx sq

由於連接的字符串中包含數字與百分比字符串,數據類型不一致,在xml中查詢返回會導致數據亂碼,在數據庫執行sql又沒問題

               

 

經過一番查找問題,發現需要將數字使用CONVERT(number,char)函數轉換字符類型連接。

 

2、MyBatis中 <if test="isfk != null and isfk != ' ' and isfk=='1' ">標簽過濾不執行

在mybatis中執行會過濾掉該if判斷,但程序不報錯會繼續執行

應:將單個的字符放入雙引號里面,外層用單引號    <if test='isfk == "1" '> 

或者添加toString()方法    <if test="isfk == '1'.toString() "> 

原因分析:mybatis是用OGNL表達式來解析的,在OGNL的表達式中,’1’會被解析成字符,java是強類型的,char 和 一個string 會導致不等,所以if標簽中的sql不會被解析。


免責聲明!

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



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