mybatis如何返回某列的最大值
mybatis返回某列的最大值
Mapper文件中sql:
<select id="queryMaxId" resultType="Integer"> select Max(id) as id from table <select>
resultType
:以數據庫對應ID屬性自定義
SQL
:
select * from table where id=(select MAX(id) from table )
mybatis返回最大值max,最小值min,vag,count函數和其他字段等對應接口返回值的處理方式
我們在xml文件寫sql同時進行數據庫查詢max,min,sum,avg,count函數或其他字段,不清楚返回值怎麼獲取,看下去,你不會後悔O(∩_∩)O
面對這些求最大值,最小值,平均值或者夾雜著其他字段等,單個出現就正常返回Integer或者Long或著String就可以
如果同時出現很多個,那最簡單的方法就是封裝一個實體對象
案例:
/** * 封裝的實體對象,屬性對應你的查詢結果字段,根據自己的情況添加 */ @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),數據庫中的字段不用起別名,例如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接口:(我查詢的是一堆結果對象,如果你查詢一個,也可以傳參數,自己看著改吧)
List<MaxAndMinVA> va();
這時就正常測試就可以看到結果瞭
重點提醒:xml文件中sql起別名as一定要對應實體類屬性名,不然會查詢出null(不信你可以試一下)
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- mybatis映射和實際類型不一致的問題
- MyBatis在DAO層定義接口返回類型泛型無效的解決
- mybatis的mapper特殊字符轉移及動態SQL條件查詢小結
- mybatis接口綁定失效的解決
- mybatis的動態SQL和模糊查詢實例詳解