mybatis如何返回某列的最大值
mybatis返回某列的最大值
Mapper文件中sql:
<select id="queryMaxId" resultType="Integer"> select Max(id) as id from table <select>
resultType
:以數(shù)據(jù)庫(kù)對(duì)應(yīng)ID屬性自定義
SQL
:
select * from table where id=(select MAX(id) from table )
mybatis返回最大值max,最小值min,vag,count函數(shù)和其他字段等對(duì)應(yīng)接口返回值的處理方式
我們?cè)趚ml文件寫(xiě)sql同時(shí)進(jìn)行數(shù)據(jù)庫(kù)查詢max,min,sum,avg,count函數(shù)或其他字段,不清楚返回值怎么獲取,看下去,你不會(huì)后悔O(∩_∩)O
面對(duì)這些求最大值,最小值,平均值或者夾雜著其他字段等,單個(gè)出現(xiàn)就正常返回Integer或者Long或著String就可以
如果同時(shí)出現(xiàn)很多個(gè),那最簡(jiǎn)單的方法就是封裝一個(gè)實(shí)體對(duì)象
案例:
/** * 封裝的實(shí)體對(duì)象,屬性對(duì)應(yīng)你的查詢結(jié)果字段,根據(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中,很簡(jiǎn)單,直接正常寫(xiě)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文件中,需要注意:每個(gè)計(jì)算的最大值,最小值需要起別名(這個(gè)別名必須對(duì)應(yīng)你的實(shí)體表屬性名,不然查詢出來(lái)的是null),數(shù)據(jù)庫(kù)中的字段不用起別名,例如address,起別名只針對(duì)求最大值,平均值等
舉例:
<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接口:(我查詢的是一堆結(jié)果對(duì)象,如果你查詢一個(gè),也可以傳參數(shù),自己看著改吧)
List<MaxAndMinVA> va();
這時(shí)就正常測(cè)試就可以看到結(jié)果了
重點(diǎn)提醒:xml文件中sql起別名as一定要對(duì)應(yīng)實(shí)體類屬性名,不然會(huì)查詢出null(不信你可以試一下)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring啟動(dòng)過(guò)程源碼分析及簡(jiǎn)介
本文是通過(guò)AnnotationConfigApplicationContext讀取配置類來(lái)一步一步去了解Spring的啟動(dòng)過(guò)程。本文重點(diǎn)給大家介紹Spring啟動(dòng)過(guò)程源碼分析及基本概念,感興趣的朋友一起看看吧2021-10-10Junit測(cè)試多線程無(wú)法得到結(jié)果的問(wèn)題解決
在測(cè)試一個(gè)文件轉(zhuǎn)換工具類的時(shí)候,發(fā)生一個(gè)有趣的現(xiàn)象,同樣的輸入,使用Main函數(shù)可以正確解析,得到結(jié)果,使用Junit卻無(wú)法得到結(jié)果,神奇的是,即使捕獲Throwable,也無(wú)法捕獲到仍和異常。2021-05-05(starters)springboot-starter整合阿里云datahub方式
這篇文章主要介紹了(starters)springboot-starter整合阿里云datahub方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11Spring boot項(xiàng)目使用thymeleaf模板過(guò)程詳解
這篇文章主要介紹了Spring boot項(xiàng)目使用thymeleaf模板過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07Java的MyBatis框架中MyBatis Generator代碼生成器的用法
這篇文章主要介紹了Java的MyBatis框架中Mybatis Generator代碼生成器的用法,Mybatis Generator主要被用來(lái)生成繁瑣的配置文件來(lái)提高效率,需要的朋友可以參考下2016-04-04