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

SpringBoot使用MyBatis時的幾種傳參規(guī)范示例

 更新時間:2022年02月20日 10:29:23   作者:工作事小摸魚事大  
使用Mybatis作為持久層框架時,對于數(shù)據(jù)庫的增刪改查等操作都需要參數(shù)的傳遞,本文就詳細的介紹了一下SpringBoot使用MyBatis時的幾種傳參規(guī)范示例,感興趣的可以了解一下

使用Mybatis作為持久層框架時,對于數(shù)據(jù)庫的增刪改查等操作都需要參數(shù)的傳遞,這里學習記錄一下MyBatis中可用的參數(shù)傳遞方式。

1. 單個簡單參數(shù)傳遞

使用 MyBatis 傳遞單個參數(shù)時比較簡單,形式如#{a},#,#{param1}等都可以在 MyBatis 中獲取到唯一參數(shù),但是參數(shù)名盡量和入?yún)⒚恢?,這樣更符合開發(fā)規(guī)范。

Mapper 文件定義

UserInfo selectById(String userId);

xml 文件定義

  • 單個參數(shù)時,標簽中可不定義參數(shù)類型
<select id="selectByUserId" resultType="com.shone.entity.UserInfo">
    select user_id, user_name from user_info where user_id=#{userId}
</select>

2. 匿名參數(shù)順序傳遞

匿名參數(shù)傳遞時使用的是 MyBatis 中索引傳遞的方式,對于傳遞的多個參數(shù),在sql語句標簽中使用#{param1}、#{param2}等索引依次代表傳入的參數(shù)值。

Mapper 文件

  • 使用匿名參數(shù)傳遞時,接口中定義的方法參數(shù)無需使用注解
UserInfo selectByNameAndAge(String userName, Integer age);

xml 文件

  • xml中讀取參數(shù)時可以使用使用arg0, arg1, param1, param2等形式
  • 參數(shù)有多個類型且匿名,因此不需要指定入?yún)㈩愋?/li>
  • Mapper中沒有使用注解,因此直接使用參數(shù)名時會報錯參數(shù)名找不到
<select id="selectByNameAndAge" resultType="com.shone.entity.UserInfo">
    select user_id, user_name from user_info where user_name=#{param1} and user_gender=#{param2}
</select>
  • 匿名參數(shù)傳遞方法可讀性差,對后期維護不友好,不符合開發(fā)規(guī)范。

3. 使用@Param注解傳遞

@Param注解用于指定key,指定了key之后,在sql標簽中可以使用key來索引對應(yīng)的參數(shù)值。

Mapper 文件

  • 接口中定義時使用 @Param注解指定參數(shù)對應(yīng)的key
UserInfo selectByNameAndAge(@Param("userName") String userName, @Param("age") Integer age);

xml 文件

  • 不需要指定傳入?yún)?shù)類型
  • 使用注解指定的key就可以獲取到對應(yīng)入?yún)⒅?/li>
<select id="selectByNameAndAge" resultType="com.shone.entity.UserInfo">
    select user_id, user_name from user_info where user_name=#{userName} and user_gender=#{age}
</select>

@Param注解傳參使用時清晰簡潔明了,符合開發(fā)規(guī)范,在參數(shù)較少時建議使用該方式。

4. 使用Map傳遞參數(shù)

MyBatis框架底層就是將入?yún)⑥D(zhuǎn)換成Map類型進行傳遞的,因此我們也可以使用Map進行參數(shù)的傳遞,傳入的參數(shù)在sql標簽中可以根據(jù)Map中的key值直接獲取。

使用時,需要將傳入的參數(shù)放入到map中

  map.put("userName","tom");
  map.put("gender",1);

Mapper 文件

UserInfo selectByNameAndAge(Map<String, Object> map);

xml 文件

  • 入?yún)㈩愋椭付镸ap
<select id="selectByNameAndAge" resultType="com.shone.entity.UserInfo" paramterType="map">
    select user_id, user_name from user_info where user_name=#{userName} and user_gender=#{age}
</select>

使用Map傳遞參數(shù)符合MyBatis底層的設(shè)計,性能也沒有問題,但是在開發(fā)中由于將所有值封裝成為map,無法直觀看到map中可能含有的參數(shù),在后期維護上不太友好。

5. 使用JavaBean(POJO)傳遞

除了Map方式,還可以使用JavaBean的方式來傳遞多個參數(shù),此時在sql標簽中直接使用bean對象的屬性來索引參數(shù)值,注意bean對象中 需要有相應(yīng)參數(shù)的get方法,否則無法正常獲取。

使用javabean作為參數(shù),需要先定義JavaBean

@Data
public class UserInfo {
  private String userName;
  private Integer age;
}

Mapper 文件

UserInfo selectByEntity(UserInfo userInfo);

xml 文件

  • 指定入?yún)㈩愋蜑橄鄳?yīng)的JavaBean全路徑限定類名
<select id="selectByNameAndAge" resultType="com.shone.entity.UserInfo" paramterType="com.shone.entity.UserInfo">
    select user_id, user_name from user_info where user_name=#{userName} and user_gender=#{age}
</select>

JavaBean的參數(shù)傳遞方式更符合項目開發(fā)的規(guī)范,實際使用時簡潔明了,在參數(shù)較多時建議使用這種方式,創(chuàng)建JavaBean來作為參數(shù)傳遞對象。

6. 使用List、Array、Set傳遞

List、Array、Set等方式的傳參通常用于sql標簽中的in操作,即用于MyBatis中的標簽。

使用list或array時,一般是做in操作,只有一個參數(shù)。

Mapper 文件

UserInfo selectByIdList(List<String> userIdList);

xml 文件

  • 不需要指定入?yún)㈩愋停蛑付長ist
  • 使用標簽處理sql中的in操作
  • 如果參數(shù)是list,則collection為list;如果參數(shù)類型是array,則collection是array
  • 如果是多個參數(shù)或者是對象的屬性值作為list,則傳參應(yīng)為map/bean類型,collection應(yīng)為對象屬性中的list
<select id="selectByIdList" resultMap="userResultMap">
    select * from user_info where status=1
    and user_id in
    <foreach collection="list" item="item" open="(" separator="," close=")">
        #{item}
    </foreach>
</select>

到此這篇關(guān)于SpringBoot使用MyBatis時的幾種傳參規(guī)范示例的文章就介紹到這了,更多相關(guān)SpringBoot MyBatis 傳參內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • EasyExcel實現(xiàn)讀取excel中的日期單元格并自動判定終止讀取

    EasyExcel實現(xiàn)讀取excel中的日期單元格并自動判定終止讀取

    這篇文章主要為大家詳細介紹了EasyExcel如何實現(xiàn)讀取excel中的日期單元格并自動判定終止讀取,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-11-11
  • java中計算集合的交差并集示例代碼

    java中計算集合的交差并集示例代碼

    今天突然想Java如何計算集合的交差并集,主要是看Python語言的時候想起來的。下面這篇文章主要給大家介紹了關(guān)于java中計算集合的交差并集的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-08-08
  • Java數(shù)據(jù)類型實現(xiàn)自動與強制轉(zhuǎn)換的示例代碼

    Java數(shù)據(jù)類型實現(xiàn)自動與強制轉(zhuǎn)換的示例代碼

    Java數(shù)據(jù)類型之間的轉(zhuǎn)換有自動轉(zhuǎn)換和強制類型轉(zhuǎn)換,這篇文章主要給大家介紹Java數(shù)據(jù)類型如何實現(xiàn)自動轉(zhuǎn)換與強制轉(zhuǎn)換,需要的朋友可以參考下
    2023-05-05
  • 使用Java Minio搭建自己的文件系統(tǒng)詳解

    使用Java Minio搭建自己的文件系統(tǒng)詳解

    這篇文章主要介紹了使用Java Minio搭建自己的文件系統(tǒng)的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2021-09-09
  • Java調(diào)用Zookeeper的實現(xiàn)步驟

    Java調(diào)用Zookeeper的實現(xiàn)步驟

    本文主要介紹了Java調(diào)用Zookeeper的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Spring Bean的線程安全問題

    Spring Bean的線程安全問題

    Spring容器中的Bean是否線程安全,本文主要介紹了Spring Bean的線程安全問題,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 詳解SpringBoot2 使用Spring Session集群

    詳解SpringBoot2 使用Spring Session集群

    這篇文章主要介紹了SpringBoot2 使用Spring Session集群,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-04-04
  • 在SpringBoot中使用JWT的實現(xiàn)方法

    在SpringBoot中使用JWT的實現(xiàn)方法

    這篇文章主要介紹了在SpringBoot中使用JWT的實現(xiàn)方法,詳細的介紹了什么是JWT和JWT實戰(zhàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • Java 實戰(zhàn)練手項目之酒店管理系統(tǒng)的實現(xiàn)流程

    Java 實戰(zhàn)練手項目之酒店管理系統(tǒng)的實現(xiàn)流程

    讀萬卷書不如行萬里路,只學書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+jsp+mysql+maven實現(xiàn)一個酒店管理系統(tǒng),大家可以在過程中查缺補漏,提升水平
    2021-11-11
  • springboot整合ehcache和redis實現(xiàn)多級緩存實戰(zhàn)案例

    springboot整合ehcache和redis實現(xiàn)多級緩存實戰(zhàn)案例

    這篇文章主要介紹了springboot整合ehcache和redis實現(xiàn)多級緩存實戰(zhàn)案例,從源碼角度分析下多級緩存實現(xiàn)原理,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2023-08-08

最新評論

双桥区| 蒲城县| 安塞县| 永昌县| 宜黄县| 广州市| 瑞金市| 武穴市| 汾西县| 武胜县| 岳普湖县| 海淀区| 那坡县| 安新县| 长泰县| 托里县| 阳曲县| 龙江县| 孟津县| 叙永县| 虞城县| 雷州市| 勃利县| 静宁县| 英吉沙县| 比如县| 吉木乃县| 新郑市| 抚顺市| 南郑县| 习水县| 天津市| 漳平市| 巴中市| 南华县| 长沙市| 柞水县| 井冈山市| 崇文区| 紫云| 平定县|