Mybatis查找返回Map,List集合類型的數據方式
Mybatis查找返回Map,List集合類型的數據
一、查找返回Bean對象的List集合
基本與返回Bean對象沒什麼區別,resultType依然為Bean對象的全類名,隻是接口中的方法類型要進行修改
public List<Employee> getEmpListByEmail(String email);
二、查詢返回Bean對象的Map集合
同樣,resultType依然為Bean對象的全類名,隻是接口中的方法類型要進行修改,添加註解。
@MapKey(“Bean對象屬性名”):指定Map的鍵為Bean對象的哪個屬性,一般設置為主鍵,因為Map不能存重復的鍵。
@MapKey("id") public Map<Integer,Employee> getEmpMapByEmail(String email);
三、查詢返回單條紀錄的Map集合
即當前記錄以鍵為列名,值為列屬性存入map(查詢到的記錄一定要隻有一條,否則報錯)
註意,resultType需要設置為map,接口中方法類型需要修改,Map的鍵默認為列名。
public Map<String, Object> getEmpByEmail(String email);
mybatis 查詢返回List集合、map集合、List<Map>集合
返回map類型
1. xml中
<select id="selectUser" resultType="java.util.HashMap"> </select>
2.Dao接口中
Map<String,Object> selectUser();
這種方式SQL隻能返回一行記錄或者沒有返回,如果返回多行記錄,則程序報錯。
返回List<String>類型
3. xml中
<select id="selectUser" resultType="java.lang.String"> </select>
2.Dao接口中
List<String> selectUser();
這種方式可以返回多行記錄,但是每行記錄隻有指定的一列數據。
返回List<Map>類型
1.xml中
<select id="selectUser" resultType="java.util.HashMap"> </select>
2.Dao接口中
List<Map<String,Object>> selectUser ();
這種方式可以返回指定的多行多列的記錄。
返回List<指定對象>類型
xml中:
<resultMap id="baseResult" type="com.XXX.BscntrUnitInfoResult(對應對象)"> <result column="unit_id" property="unitId" jdbcType="INTEGER" (字段映射關系)/> <result column="unit_name" property="unitName" jdbcType="VARCHAR" /> <result column="unit_type" property="unitType" jdbcType="INTEGER" /> <result column="super_unit_id" property="superUnitId" jdbcType="INTEGER" /> <result column="gis_start_x" property="gisStartX" jdbcType="FLOAT" /> <result column="ext_top" property="extTop" jdbcType="DOUBLE" /> </resultMap> <select id="getBscntrUnitInfoListByName" resultMap="baseResult"> </select>
Dao接口中:
public List<BscntrUnitInfoResult> getBscntrUnitInfoListByName();
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- Mybatis中resultMap的Colum和property屬性詳解
- 解讀Mapper與Mapper.xml文件之間匹配的問題
- mybatis映射和實際類型不一致的問題
- mybatis中返回多個map結果問題
- mybatis-puls中的resultMap數據映射