mybatis group by substr函數(shù)傳參報錯的解決
mybatis group by substr傳參報錯
報異常
### Cause: java.sql.SQLSyntaxErrorException: ORA-00979: 不是 GROUP BY 表達(dá)式
SELECT
?? ?SUBSTR( region_code, 1,#{ queryMap.groupCodeLength, jdbcType = INTEGER } ) AS "region_code",
?? ?count( CASE WHEN TYPE = 1 THEN 0 END ) AS "like",
?? ?count( CASE WHEN TYPE = 2 THEN 0 END ) AS "roast"?
FROM
?? ?t_pub_sentiment?
WHERE
?? ?1 = 1?
GROUP BY
?? ?SUBSTR(region_code,1,#{ queryMap.groupCodeLength,jdbcType = INTEGER })更改后:
SELECT
?? ?SUBSTR( region_code, 1, $ { queryMap.groupCodeLength } ) AS "region_code",
?? ?count( CASE WHEN TYPE = 1 THEN 0 END ) AS "like",
?? ?count( CASE WHEN TYPE = 2 THEN 0 END ) AS "roast"?
FROM
?? ?t_pub_sentiment?
WHERE
?? ?1 = 1?
GROUP BY
?? ?SUBSTR( region_code, 1, $ { queryMap.groupCodeLength } )原因
#{} 和 ${} 在預(yù)編譯中的處理是不一樣的。#{} 在預(yù)處理時,會把參數(shù)部分用一個占位符 ? 代替。而 ${} 則只是簡單的字符串替換。
${}有sql注入的風(fēng)險,需謹(jǐn)慎使用。
使用group by 分組查詢返回為null
我在使用mybatis進(jìn)行分組查詢時數(shù)據(jù)庫有數(shù)據(jù),但是mybatis返回為null,使用mybatis版本為3.4.1
解決方法
在resultMap的result標(biāo)簽中添加 property屬性
如下:
<resultMap id="deptMap" type="java.util.Map">
? ? ? ? <result column="id" property="id"/>
? ? ? ? <result column="dept_name" property="deptname"/>
? ? ? ? <result column="count(1)" property="count"/>
? ? </resultMap>
??
?<select id="getDeptByIdStep" resultMap="deptMap">
? select ?id,dept_name,count(1) ?from tbl_dept where dept_id=#{id} group by id;
?</select>我在第一次使用時沒有添加property導(dǎo)致mybatis返回null,添加后就可以正常返回。
dao層代碼
public List<Map> getDeptByIdStep(Integer id);
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解Java的Hibernat框架中的Map映射與SortedMap映射
這篇文章主要介紹了Java的Hibernat框架中的Map映射與SortedMap映射,Hibernat是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下2015-12-12
解決idea不支持SpringBoot yml文件的圖文教程
這篇文章主要介紹了解決idea不支持SpringBoot yml文件,需要的朋友可以參考下2018-06-06
Java并發(fā)系列之AbstractQueuedSynchronizer源碼分析(條件隊列)
這篇文章主要為大家詳細(xì)介紹了Java并發(fā)系列之AbstractQueuedSynchronizer源碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-02-02
解析分別用遞歸與循環(huán)的方式求斐波那契數(shù)列的實現(xiàn)方法
本篇文章是對分別用遞歸與循環(huán)的方式求斐波那契數(shù)列的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06

