mybatis group by substr函數(shù)傳參報(bào)錯(cuò)的解決
mybatis group by substr傳參報(bào)錯(cuò)
報(bào)異常
### 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í),會(huì)把參數(shù)部分用一個(gè)占位符 ? 代替。而 ${} 則只是簡(jiǎn)單的字符串替換。
${}有sql注入的風(fēng)險(xiǎn),需謹(jǐn)慎使用。
使用group by 分組查詢(xún)返回為null
我在使用mybatis進(jìn)行分組查詢(xún)時(shí)數(shù)據(jù)庫(kù)有數(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>我在第一次使用時(shí)沒(méi)有添加property導(dǎo)致mybatis返回null,添加后就可以正常返回。
dao層代碼
public List<Map> getDeptByIdStep(Integer id);
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解Java的Hibernat框架中的Map映射與SortedMap映射
這篇文章主要介紹了Java的Hibernat框架中的Map映射與SortedMap映射,Hibernat是Java的SSH三大web開(kāi)發(fā)框架之一,需要的朋友可以參考下2015-12-12
解決idea不支持SpringBoot yml文件的圖文教程
這篇文章主要介紹了解決idea不支持SpringBoot yml文件,需要的朋友可以參考下2018-06-06
Java并發(fā)系列之AbstractQueuedSynchronizer源碼分析(條件隊(duì)列)
這篇文章主要為大家詳細(xì)介紹了Java并發(fā)系列之AbstractQueuedSynchronizer源碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02
解析分別用遞歸與循環(huán)的方式求斐波那契數(shù)列的實(shí)現(xiàn)方法
本篇文章是對(duì)分別用遞歸與循環(huán)的方式求斐波那契數(shù)列的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06

