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

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

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

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

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

1)參數(shù)索引

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

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

多個(gè)參數(shù)可以使用類似于索引的方式傳值,比如#{param1}對(duì)應(yīng)第一個(gè)參數(shù),#{param2}對(duì)應(yīng)第二個(gè)參數(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ù)開(kāi)發(fā)規(guī)范,這種方式很不推薦??!

如果參數(shù)個(gè)數(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>

控制臺(tái)日志輸出:

2)@Param

Mybatis會(huì)將參數(shù)放在map集合中,除了以param1, param2..為key的方式存儲(chǔ)數(shù)據(jù)外,還會(huì)以如下方式存儲(chǔ)數(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>

控制臺(tái)日志輸出:

3)Map集合

Mybatis底層就是將入?yún)⑥D(zhuǎn)換成Map,入?yún)⒅苯觽鱉ap時(shí),#{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);

控制臺(tái)日志輸出:

4)POJO實(shí)體類

多個(gè)參數(shù)也可以用實(shí)體類封裝起來(lái),此時(shí)對(duì)應(yīng)的key就是屬性名稱,注意POJO實(shí)體類中的字段一定要有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);

控制臺(tái)日志輸出:

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

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

相關(guān)文章

  • Java集合TreeSet用法詳解

    Java集合TreeSet用法詳解

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

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

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

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

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

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

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

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

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

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

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

    Flink入門(mén)級(jí)應(yīng)用域名處理示例

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

    在JPA中criteriabuilder使用or拼接多個(gè)like語(yǔ)句

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

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

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

    SpringBoot整合mybatis的方法詳解

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

最新評(píng)論

绍兴市| 拉萨市| 太原市| 嘉兴市| 元谋县| 镇江市| 郸城县| 扎鲁特旗| 泾阳县| 南乐县| 乌鲁木齐市| 万盛区| 彭泽县| 漳浦县| 昌乐县| 汉寿县| 杂多县| 卢湾区| 承德县| 泾川县| 黄骅市| 基隆市| 滦平县| 洛川县| 高清| 白银市| 博野县| 正安县| 汝南县| 伊金霍洛旗| 丹阳市| 当雄县| 罗山县| 新干县| 秀山| 阿克苏市| 教育| 田东县| 新乡市| 房产| 伊川县|