欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

1)參數(shù)索引

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

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

多個參數(shù)可以使用類似于索引的方式傳值,比如#{param1}對應第一個參數(shù),#{param2}對應第二個參數(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ù)也可以用實體類封裝起來,此時對應的key就是屬性名稱,注意POJO實體類中的字段一定要有get方法。

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是如何處理的。

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

相關文章

  • 基于java中子類的繼承性的應用介紹

    基于java中子類的繼承性的應用介紹

    本篇介紹了,基于java中子類的繼承性的應用。需要的朋友參考下
    2013-05-05
  • Java中的Optional類用法詳細講解

    Java中的Optional類用法詳細講解

    這篇文章詳細介紹了Java中Optional類的使用,包括創(chuàng)建Optional對象,Optional對象的常用方法,如get、orElse、orElseGet、orElseThrow等,以及Optional類結合Lambda表達式和StreamAPI的使用,需要的朋友可以參考下
    2024-10-10
  • springboot如何忽略接收請求中的參數(shù)

    springboot如何忽略接收請求中的參數(shù)

    這篇文章主要介紹了springboot如何忽略接收請求中的參數(shù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • java 使用JDBC構建簡單的數(shù)據(jù)訪問層實例詳解

    java 使用JDBC構建簡單的數(shù)據(jù)訪問層實例詳解

    以下是如何使用JDBC構建一個數(shù)據(jù)訪問層,包括數(shù)據(jù)轉(zhuǎn)換(將從數(shù)據(jù)庫中查詢的數(shù)據(jù)封裝到對應的對象中……),數(shù)據(jù)庫的建立,以及如何連接到數(shù)據(jù)庫,需要的朋友可以參考下
    2016-11-11
  • SpringBoot+slf4j線程池全鏈路調(diào)用日志跟蹤問題及解決思路(二)

    SpringBoot+slf4j線程池全鏈路調(diào)用日志跟蹤問題及解決思路(二)

    本文主要給大家介紹如何實現(xiàn)子線程中的traceId日志跟蹤,本文通過封裝Callable為例給大家介紹的非常詳細,需要的朋友一起看看吧
    2021-05-05
  • Java HashMap算法原理詳細講解

    Java HashMap算法原理詳細講解

    在java開發(fā)中,HashMap是最常用、最常見的集合容器類之一,文中通過示例代碼介紹HashMap為啥要二次Hash,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-02-02
  • java中@ModelAttribute注解的作用

    java中@ModelAttribute注解的作用

    本文主要介紹了java中@ModelAttribute注解的作用。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • java引用jpython的方法示例

    java引用jpython的方法示例

    這篇文章主要介紹了java引用jpython的方法,結合實例形式分析了java引用jpython及相關使用技巧,需要的朋友可以參考下
    2016-11-11
  • PowerJob的Evaluator方法工作流程源碼解讀

    PowerJob的Evaluator方法工作流程源碼解讀

    這篇文章主要介紹了PowerJob的Evaluator方法工作流程源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • 詳解Java String類常用方法有哪些

    詳解Java String類常用方法有哪些

    今天給大家?guī)淼氖顷P于Java String的相關知識,文章圍繞著String類常用方法展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06

最新評論