最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mybatis實(shí)現(xiàn)指定sql返回值類型

 更新時間:2025年12月22日 16:17:18   作者:姓蔡小朋友  
文章介紹了Mybatis中處理不同返回值情況的方法,包括返回值只有一個和有多個的情況,對于返回值只有一個,可以直接返回該值;對于多個返回值,可以使用POJO對象、List集合或Map集合進(jìn)行封裝,每種方法都有其適用的場景

一、返回值只有一個的情況

方法一:返回值只有一個

  • Mybatis返回值只有一個,如果sql的執(zhí)行結(jié)果只有一個(如增刪改返回int類型),那么可以直接返回這一個值即可。
  • 適用于查詢結(jié)果只有一個值的情況。
//更新用戶信息
int update(Student stu);
<!--按主鍵刪除學(xué)生
	int update(Student stu);
	下面sql的返回值是執(zhí)行成功的條數(shù)。
	update,insert,delete語句可以不寫resultType
-->
    <update id="update" parameterType="com.user.pojo.Student" >
        update student set name=#{name} ,email=#{email} ,age=#{age}
        where id = #{id}
    </update>

但如果sql的返回值是多個,而Mybatis返回值只能返回一個值,所以必須把這多個返回值進(jìn)行封裝。

二、返回值有多個的情況

方法一:使用POJO對象封裝結(jié)果,POJO對象作為返回值

  • 適用于查詢結(jié)果有一行值,這些值可以使用POJO封裝的情況。
//根據(jù)用戶主鍵查用戶,注意成員變量名和數(shù)據(jù)庫表的列名要相同。
Student getById(int id);
<!--按主鍵id查詢學(xué)生信息
    Student getById(Integer id);
    下面sql結(jié)果返回id,name,email,age,我們用Student對象封裝并返回這個對象,返回值和對象的成員變量一一對應(yīng),底層調(diào)用對象的set方法給對象的成員變量賦值。
    resultType="com.user.pojo.Student"返回值必須寫包的全限定類名。
-->
<select id="getById" parameterType="Integer" resultType="com.user.pojo.Student">
    Select id,name,email,age
    from Student
    where id = #{id}
</select>

如果返回值是多個,且這些返回值沒有適合的POJO對象來封裝,那么無法使用POJO對象作為返回值。(重要的是返回值之間沒有聯(lián)系,沒有對象能封裝他們)

方法二:List集合作為返回值

  • List集合原理其實(shí)就是對象封裝,查詢結(jié)果只有一行且該行的數(shù)據(jù)有聯(lián)系的話,可以封裝成一個對象,用一個對象封裝返回就夠了,但是查詢結(jié)果有多行的時候,且每行的數(shù)據(jù)有聯(lián)系的話,可以把每行的數(shù)據(jù)封裝成一個對象,然后把所有行的對象添加到一個List集合中并返回。
  • 適用于查詢結(jié)果有多行值,每行值可以使用POJO封裝的情況。
//查詢?nèi)坑脩粜畔?
List<User> getAll();
<!--
返回值是User對象封裝的,User對象中封裝了id,username,birthday,sex,address屬性,返回多行,一行就是一個User對象,所有User對象都添加到一個List集合中返回。
其中List底層調(diào)用add方法將每個POJO對象加入到List集合中,POJO對象底層調(diào)用set方法給對象的成員變量賦值。
-->
<select id="getAll" resultType="user">
        select id,username,birthday,sex,address
        from users;
</select>

方法三:map集合作為返回值

  • 如果sql執(zhí)行的結(jié)果有多行,多個數(shù)據(jù)之間沒有任何關(guān)系,且沒有對象能封裝這些數(shù)據(jù),則需要使用集合map存儲數(shù)據(jù)的返回值。(重要的是這些返回的數(shù)據(jù)之間沒有聯(lián)系,沒有對象能封裝他們)
  • map使用表中的列名或別名做為鍵名進(jìn)行返回?cái)?shù)據(jù)。

1.map封裝返回值是一行

  • 適用于查詢結(jié)果有一行值,這些值不能用POJO對象封裝的情況。
//根據(jù)主鍵查用戶對象
Map<String,Object> getReturnMapOne(int id);
<!--返回值類型是map,其中key是列名,value是查詢結(jié)果-->
<select id="getReturnMapOne" resultType="map" parameterType="int">
    select id ,username ,sex ,address ,birthday 
    from users
    where id=#{id}
</select>

2.map封裝返回之是多行

適用于查詢結(jié)果有多行值,單獨(dú)每一行的值不能用POJO對象封裝。

//使用map封裝單獨(dú)一行,返回多個map的集合,即為多行--->List<Map<String,Object>>,每個map是查詢到的一行數(shù)據(jù)結(jié)果,多行數(shù)據(jù)結(jié)果用list封裝
List<Map<String,Object>> getReturnMap();
<!--這里的返回值類型是泛型的類型-->
<select id="getReturnMap" resultType="map" >
    select id ,username ,sex ,address ,birthday 
    from users
</select>

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

石林| 乌审旗| 桐庐县| 新化县| 镇江市| 莒南县| 沙坪坝区| 南华县| 通山县| 印江| 江永县| 磴口县| 扶余县| 石门县| 石屏县| 潞城市| 张家口市| 阳信县| 富平县| 错那县| 铜梁县| 京山县| 珲春市| 多伦县| 芷江| 克什克腾旗| 大同市| 天全县| 万山特区| 同仁县| 大理市| 兴国县| 阿鲁科尔沁旗| 徐汇区| 行唐县| 甘孜| 澎湖县| 临高县| 横峰县| 沙河市| 吉林市|