中文導致Mybatis無效的列索引
阿新 • • 發佈:2019-01-27
<!-- 普鐵 --> <select id="selectTrainSceneThrough" parameterType="HashMap" resultType="HashMap"> select ROUND(("普鐵使用者專網總流量KB"+"普鐵使用者公網總流量KB")/1024/1024,3) as total_dataflow, "普鐵使用者數" as total_users from RPT_NETWORK_HOUR where "日期"='#{kpi_time}' and "線路標識"=#{road_id} </select>
提示“無效的索引列”
而
<select id="selectCRHSceneThrough" parameterType="HashMap" resultType="HashMap">
select *
from RPT_NETWORK_HOUR
where report_id=#{road_id}
</select>
執行正常
起初以為是#和$的問題,後來知道是中文引起的。
解決方法一:
檔案頭是 <?xml version="1.0"
encoding="UTF-8" ?> 改成 <?xml version="1.0" encoding="GBK" ?>
該方法不一定有效時選擇方法二
用${} 代替 #{}
<select id="selectCRHSceneThrough" parameterType="HashMap" resultType="HashMap"> select ROUND(("高鐵使用者專網總流量KB"+"高鐵使用者公網總流量KB")/1024/1024,3) as total_dataflow, "高鐵使用者數" as total_users from RPT_NETWORK_HOUR where "日期"='${kpi_time}' and "線路標識"=${road_id} </select>
只是會在日誌裡直接打印出完整的sql。完全降低了。
-------------
更多的Java,Angular,Android,大資料,J2EE,Python,資料庫,Linux,Java架構師,: