【問題記錄】MyBatis查詢數據庫返回多個不一樣類型參數的結果集的接收方式

實際上是個很是簡單的問題,可是這玩意兒弄得我很難受,又浪費了一個下午的時間,簡直了……java

問題大概是,我在查詢數據庫時,查詢的結果有兩個,一個是varchar格式的字段,一個int格式字段,例如:mysql

  select name,count(*) as num from student group by friend;
sql

獲取結果的時候,我將返回值類型設置爲了HashMap,接受用的是List<HashMap<String,String>>,事實上這種方法可以接收到數據,並且遍歷List時經過toString()方法也能夠正常輸出,例如:{name=A, num=20}數據庫

可是這麼作的問題是,(例)當我嘗試取出Map中的age字段時,就會報錯,提示:函數

  java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Stringspa

告知我不能進行類型轉換(long --> String)。遇到這個錯誤以後我浪費了很長一段時間來處理,最後才意識到多是返回值類型不一樣形成的問題,我本覺得int類型的返回值用Map<String,String>接收以後就能夠被強轉爲String,可是顯然不是這樣,所以要麼換一種接收方式(實體類),要麼就轉換類型。io

這樣的話問題就簡單多了,在查詢的時候加一個類型轉換,將參數中的int轉換爲String(char)就行了(實體類太麻煩了)。ast

mysql中類型轉換的函數有兩種:List

  1)CAST(value as type) 就是CAST(xxx AS 類型)select

  2)CONVERT(value, type) 就是CONVERT(xxx,類型)

以下:

  select name,convert(count(*),char) as num from student group by friend;

這樣用Map<String,String>來接就沒問題了,也能正常的取出值了。

相關文章
相關標籤/搜索