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

Mybatis實現(xiàn)傳入多個參數(shù)的四種方法詳細講解

 更新時間:2023年01月20日 10:31:39   作者:禿禿愛健身  
這篇文章主要介紹了Mybatis實現(xiàn)傳入多個參數(shù)的四種方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧

一、Mybatis四種傳遞多個參數(shù)的方式

XML文件或者注解中都通過#{}獲取參數(shù)的值,${}也可以,但是存在SQL注入問題。

1)參數(shù)索引

Mybatis會將參數(shù)放在map集合中,并以如下方式存儲數(shù)據(jù):

以param1, param2…為key,參數(shù)值為value。

多個參數(shù)可以使用類似于索引的方式傳值,比如#{param1}對應(yīng)第一個參數(shù),#{param2}對應(yīng)第二個參數(shù)…

1> Mapper方法:

User getUserByUserIdAndName(Long userId, String name);

2> XML文件內(nèi)容:

<select id="getUserByUserIdAndName" resultType="com.saint.vo.User">
    select
    id, name, age
    from
    tb_user
    where
    id = #{param1} and name = #{param2}
</select>

根據(jù)開發(fā)規(guī)范,這種方式很不推薦!!

如果參數(shù)個數(shù)比較少,并且不想使用Map、POJO的方式,可以使用參數(shù)名 替代 索引。

<select id="getUserByUserIdAndName" resultType="com.saint.vo.User">
    select
    id, name, age
    from
    tb_user
    where
    id = #{userId} and name = #{name}
</select>

控制臺日志輸出:

2)@Param

Mybatis會將參數(shù)放在map集合中,除了以param1, param2..為key的方式存儲數(shù)據(jù)外,還會以如下方式存儲數(shù)據(jù):

@Param注解的value屬性值為key,參數(shù)值為value。

1> Mapper方法:

User getUserById(@Param("id") Long id);

2> XML文件內(nèi)容:

<select id="getUserById" parameterType="long" resultType="com.saint.vo.User">
    select
        id, name, age
    from
        tb_user
    where
        id = #{id}
</select>

控制臺日志輸出:

3)Map集合

Mybatis底層就是將入?yún)⑥D(zhuǎn)換成Map,入?yún)⒅苯觽鱉ap時,#{key}中的key就是Map中的key;

1> Mapper方法:

Message getMessageByMap(Map<String, Object> params);

2> XML文件內(nèi)容:

<select id="getMessageByMap" parameterType="map" resultType="com.saint.vo.Message">
    select
        id, msg_id, status, content, deleted, create_time, update_time
    from
        tb_message
    where
        id = #{id} and msg_id = #{msgId}
</select>

3> Mapper方法的調(diào)用:

Map<String, Object> params = new HashMap<>();
params.put("userId", 2L);
params.put("userName", "saint");
User user = userMapper.getUserByMap(params);

控制臺日志輸出:

4)POJO實體類

多個參數(shù)也可以用實體類封裝起來,此時對應(yīng)的key就是屬性名稱,注意POJO實體類中的字段一定要有g(shù)et方法。

1> Mapper方法:

List<User> getUserByUser(User user);

2> XML文件內(nèi)容:

<select id="getUserByUser" parameterType="com.saint.vo.User" resultType="com.saint.vo.User">
    select id, name, age
    from tb_user
    where 1=1
    <if test="id != null">
        and id = #{id}
    </if>
    <if test="name != null and name != ''">
        and name = #{name}
    </if>
    <if test="age != null">
        and age = #{age}
    </if>
</select>

3> Mapper方法的調(diào)用:

User userParam = new User();
userParam.setName("saint");
userParam.setId(2L);
List<User> user = userMapper.getUserByUser(userParam);
System.out.println("user = " + user);

控制臺日志輸出:

下一篇文章將針對這四種傳參方式,從源碼層面看一看MyBatis是如何處理的。

到此這篇關(guān)于Mybatis實現(xiàn)傳入多個參數(shù)的四種方法詳細講解的文章就介紹到這了,更多相關(guān)Mybatis傳入多個參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java集合TreeSet用法詳解

    Java集合TreeSet用法詳解

    本文詳細講解了Java集合TreeSet用法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • Java中文亂碼解決方案全解析,讓你的程序“說人話”!

    Java中文亂碼解決方案全解析,讓你的程序“說人話”!

    探索Java中文亂碼解決方案全解析,讓你的程序終于能“說人話”!厭倦了看著一串串的問號或者奇怪符號嗎?跟著我們的指南,一步步輕松解鎖中文亂碼的秘密,讓你的代碼清晰表達每一個字,需要的朋友可以參考下
    2024-02-02
  • Java實戰(zhàn)權(quán)限管理系統(tǒng)的實現(xiàn)流程

    Java實戰(zhàn)權(quán)限管理系統(tǒng)的實現(xiàn)流程

    讀萬卷書不如行萬里路,只學(xué)書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SpringBoot+MyBatis+AOP+LayUI+Mysql實現(xiàn)一個權(quán)限管理系統(tǒng),大家可以在過程中查缺補漏,提升水平
    2022-01-01
  • java8 filter方法、Predicate接口的使用方式

    java8 filter方法、Predicate接口的使用方式

    這篇文章主要介紹了java8 filter方法、Predicate接口的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • java判斷String類型是否能轉(zhuǎn)換為int的方法

    java判斷String類型是否能轉(zhuǎn)換為int的方法

    今天小編就為大家分享一篇java判斷String類型是否能轉(zhuǎn)換為int的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Java 數(shù)據(jù)結(jié)構(gòu)與算法系列精講之哈希算法實現(xiàn)

    Java 數(shù)據(jù)結(jié)構(gòu)與算法系列精講之哈希算法實現(xiàn)

    哈希表本質(zhì)是一種(key,value)結(jié)構(gòu),由此我們可以聯(lián)想到,能不能把哈希表的key映射成數(shù)組的索引index呢?如果這樣做的話那么查詢相當于直接查詢索引,查詢時間復(fù)雜度為O(1),其實這也正是當key為int型時的做法,將key通過某種做法映射成index,從而轉(zhuǎn)換成數(shù)組結(jié)構(gòu)
    2022-02-02
  • Flink入門級應(yīng)用域名處理示例

    Flink入門級應(yīng)用域名處理示例

    這篇文章主要介紹了一個比較簡單的入門級Flink應(yīng)用,代碼很容易寫,主要用到的算子有FlatMap、KeyBy、Reduce,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • 在JPA中criteriabuilder使用or拼接多個like語句

    在JPA中criteriabuilder使用or拼接多個like語句

    這篇文章主要介紹了在JPA中criteriabuilder使用or拼接多個like語句,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • thymeleaf實現(xiàn)前后端數(shù)據(jù)交換的示例詳解

    thymeleaf實現(xiàn)前后端數(shù)據(jù)交換的示例詳解

    Thymeleaf?是一款用于渲染?XML/XHTML/HTML5?內(nèi)容的模板引擎,當通過?Web?應(yīng)用程序訪問時,Thymeleaf?會動態(tài)地替換掉靜態(tài)內(nèi)容,使頁面動態(tài)顯示,這篇文章主要介紹了thymeleaf實現(xiàn)前后端數(shù)據(jù)交換,需要的朋友可以參考下
    2022-07-07
  • SpringBoot整合mybatis的方法詳解

    SpringBoot整合mybatis的方法詳解

    這篇文章主要為大家詳細介紹了SpringBoot整合mybatis的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03

最新評論

衡阳县| 永平县| 平舆县| 黄浦区| 汾西县| 唐海县| 平原县| 白银市| 睢宁县| 安徽省| 磴口县| 福海县| 米脂县| 盘山县| 宁武县| 介休市| 温泉县| 兰考县| 新源县| 阳山县| 教育| 阜南县| 舒兰市| 佛冈县| 河西区| 望奎县| 咸宁市| 同德县| 新巴尔虎右旗| 简阳市| 理塘县| 海南省| 开封县| 石台县| 扎兰屯市| 武义县| 耿马| 潼南县| 乌兰浩特市| 繁昌县| 志丹县|