mybatis如何返回某列的最大值
mybatis返回某列的最大值
Mapper文件中sql:
<select id="queryMaxId" resultType="Integer"> select Max(id) as id from table <select>
resultType
:以數(shù)據(jù)庫對應ID屬性自定義
SQL
:
select * from table where id=(select MAX(id) from table )
mybatis返回最大值max,最小值min,vag,count函數(shù)和其他字段等對應接口返回值的處理方式
我們在xml文件寫sql同時進行數(shù)據(jù)庫查詢max,min,sum,avg,count函數(shù)或其他字段,不清楚返回值怎么獲取,看下去,你不會后悔O(∩_∩)O
面對這些求最大值,最小值,平均值或者夾雜著其他字段等,單個出現(xiàn)就正常返回Integer或者Long或著String就可以
如果同時出現(xiàn)很多個,那最簡單的方法就是封裝一個實體對象
案例:
/** * 封裝的實體對象,屬性對應你的查詢結果字段,根據(jù)自己的情況添加 */ @Data public class MaxAndMinVA implements Serializable { private static final long serialVersionUID = 1L; private String address; private Double maxVoltage; private Double maxElectricity; private Double minVoltage; private Double minElectricity; }
在mysql中,很簡單,直接正常寫sql就可以
舉例:
select device.address,max(va.voltage),max(va.electricity),min(va.voltage),min(va.electricity) from device left join va on device.id=va.device_id GROUP BY va.device_id
在xml文件中,需要注意:每個計算的最大值,最小值需要起別名(這個別名必須對應你的實體表屬性名,不然查詢出來的是null),數(shù)據(jù)庫中的字段不用起別名,例如address,起別名只針對求最大值,平均值等
舉例:
<select id="va" resultType="com.cn.VO.MaxAndMinVA"> select device.address,max(va.voltage) as maxVoltage,max(va.electricity) as maxElectricity,min(va.voltage) as minVoltage,min(va.electricity) as minElectricity from device left join va on device.id=va.device_id GROUP BY va.device_id </select>
mapper接口:(我查詢的是一堆結果對象,如果你查詢一個,也可以傳參數(shù),自己看著改吧)
List<MaxAndMinVA> va();
這時就正常測試就可以看到結果了
重點提醒:xml文件中sql起別名as一定要對應實體類屬性名,不然會查詢出null(不信你可以試一下)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
(starters)springboot-starter整合阿里云datahub方式
這篇文章主要介紹了(starters)springboot-starter整合阿里云datahub方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11Spring boot項目使用thymeleaf模板過程詳解
這篇文章主要介紹了Spring boot項目使用thymeleaf模板過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-07-07Java的MyBatis框架中MyBatis Generator代碼生成器的用法
這篇文章主要介紹了Java的MyBatis框架中Mybatis Generator代碼生成器的用法,Mybatis Generator主要被用來生成繁瑣的配置文件來提高效率,需要的朋友可以參考下2016-04-04