您好,登錄后才能下訂單哦!
這篇文章主要介紹“mybatis group by substr函數傳參報錯怎么解決”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“mybatis group by substr函數傳參報錯怎么解決”文章能幫助大家解決問題。
### Cause: java.sql.SQLSyntaxErrorException: ORA-00979: 不是 GROUP BY 表達式
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 } )
#{} 和 ${} 在預編譯中的處理是不一樣的。#{} 在預處理時,會把參數部分用一個占位符 ? 代替。而 ${} 則只是簡單的字符串替換。
${}有sql注入的風險,需謹慎使用。
我在使用mybatis進行分組查詢時數據庫有數據,但是mybatis返回為null,使用mybatis版本為3.4.1
在resultMap的result標簽中添加 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導致mybatis返回null,添加后就可以正常返回。
dao層代碼
public List<Map> getDeptByIdStep(Integer id);
關于“mybatis group by substr函數傳參報錯怎么解決”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。