mybatis sum(參數) 列名作為參數的問題
sum(參數) 列名作為參數
項目中有很多個字段,當字段為空的時候,求該列的平均值并賦值給該字段。如:
id | name | age |
當我需要插入一條數據的時候,這條數據的age為空,那么需要先從數據庫查詢age的平均值,然后賦值給當前的數據。當字段很多的時候就需要列名作為參數查詢了
mapper.xml
? <select id="getGtAvg" parameterType="java.lang.String" resultType="bigDecimal"> ? ? select avg(${columnName}) ? ? from tb_chuai ? ? where ${columnName} > 0 ? </select>
DAO
BigDecimal getGtAvg(@Param("columnName") String columnName);
注意事項
1、 聚合函數,如sum、avg等resultType為bigDecimal或者integer類型
2、${}一般用于傳輸數據庫的表名、字段名等,不能使用#{}
3、mysql中的varchar可以進行sum,avg等操作,但是其中的漢字作為0,計算avg平均值的時候可能出現問題。
mybatis注解sql sum(參數)傳參寫法
驗證了很久sum()里面帶參數方式 #{參數}一直不行日志顯示參數已經傳進 但就是加不上去 返回的始終是0
后面換成$(參數)之后就行了
@Select("select sum(${type}) from "+ TABLE_HOUR + " where date_format(`date`,'%Y-%m-%d') = #{date}") public int selectDay2(@Param("date") String date,@Param("type") String type);
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Mybatis?mysql模糊查詢方式(CONCAT多個字段)及bug
這篇文章主要介紹了Mybatis?mysql模糊查詢方式(CONCAT多個字段)及bug,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01解析Spring Boot 如何讓你的 bean 在其他 bean&n
在 SpringBoot 中如何讓自己的某個指定的 Bean 在其他 Bean 前完成被 Spring 加載?我聽到這個問題的第一反應是,為什么會有這樣奇怪的需求?下面小編給大家分析下Spring Boot 如何讓你的 bean 在其他 bean 之前完成加載 ,感興趣的朋友一起看看吧2024-01-01解決FeignClient發(fā)送post請求異常的問題
這篇文章主要介紹了FeignClient發(fā)送post請求異常的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07