Mybatis入門之 resultType返回值類型介紹

結合上篇mybatis入門文章的介紹,項目目錄保持不變,只需要修改mapper接口和xml映射文件即可。利用person數據庫,person中現有的數據記錄如下:
在這裏插入圖片描述

一、返回一般的數據類型,String或者int

比如根據id屬性獲取數據庫中的某個字段

PersonMapper接口:

//返回String類型
public String getPerNameById(Integer id);
// 返回int類型
public Integer getPerAgeById(Integer id);

PersonMapper.xml映射文件

<select id="getPerNameById" resultType="java.lang.String">
    select name from person where id = #{id};
</select>

<select id="getPerAgeById" resultType="java.lang.Integer">
    select age from person where id = #{id};
</select>

測試方法:

String name = mapper.getPerNameById(1);
System.out.println(name); //kk

Integer age = mapper.getPerAgeById(3);
System.out.println(age); //26

二、返回javaBean類型

例如:根據某個字段查詢結果,將結果封裝成某個JavaBean類型的數據

PersonMapper接口:

// 返回javaBean類型
public Person getPersonById(Integer id);

PersonMapper.xml映射文件

<select id="getPersonById" resultType="com.diligentkong.mybatis.bean.Person">
    select id,name,age from person where id = #{id}
</select>

測試方法:

Person person = mapper.getPersonById(1);
System.out.println(person);  //Person(id=1, name=kk, age=16)

三、返回List類型

當我們進行模糊查詢或者全表查詢時,返回的數據有可能是多條記錄,可以將數據存放在list中。

PersonMapper接口:

// 返回list類型
public List<Person> getPersonByNameLike(String name);

PersonMapper.xml映射文件:

<!--resultType:如果返回的是一個集合,要寫集合中元素的類型-->
<select id="getPersonByNameLike" resultType="com.diligentkong.mybatis.bean.Person">
    select * from person where name like #{name }
</select>

測試方法:

List<Person> list = mapper.getPersonByNameLike("%k%");
for (Person p : list){
    System.out.println(p);
}

Person(id=1, name=kk, age=16)
Person(id=5, name=kong, age=18)

四、返回map

PersonMapper接口:

//返回map類型 ,返回一條記錄的map,key就是列名,值就是對應的值
public Map<String,Object> getPersonByIdReturnMap(Integer id);

PersonMapper.xml映射文件

<select id="getPersonByIdReturnMap" resultType="map">
    select * from person where id = #{id}
</select>

測試方法:

Map<String,Object> map = mapper.getPersonByIdReturnMap(5);
System.out.println(map);
{name=kong, id=5, age=18}

PersonMapper接口:

//告訴mybatis封裝這個map的時候使用哪個屬性作爲map的key
@MapKey("name")
public Map<String,Person> getPersonByNameLikeReturnMap(String name);

PersonMapper.xml映射文件:

<select id="getPersonByNameLikeReturnMap" resultType="com.diligentkong.mybatis.bean.Person">
    select * from person where name like #{name}
</select>

測試方法:

Map<String,Person> map = mapper.getPersonByNameLikeReturnMap("%k%");
  System.out.println(map);

{kk=Person(id=1, name=kk, age=16), kong=Person(id=5, name=kong, age=18)}

    由於我們查詢的結果返回的列名與實體類中的字段名一致,可以使用resutType。
當sql的列名和實體類的屬性名不一致時,這時就要使用resultMap。
resultMap可以自定義結果集映射規則 ,resultMap與resultType只能二選一。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章