記一筆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不會被解析。
