1. 程式人生 > >中文導致Mybatis無效的列索引

中文導致Mybatis無效的列索引

<!-- 普鐵 -->
	<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架構師,: