MyBatis update標(biāo)簽詳解
在 WebsiteMapper.xml 中添加以下更新語(yǔ)句
<!--update 標(biāo)簽--> <update id="updateWebsite" parameterType="string"> update website set name = #{name} </update>
在 WebsiteMapper 接口中增加一個(gè) updateWebsite() 方法
int updateWebsite(String name);
參數(shù)為 String 類(lèi)型的字符串;返回值為 int 類(lèi)型,表示執(zhí)行 sql 語(yǔ)句后受影響的記錄的行數(shù)。
update 標(biāo)簽常用屬性
屬性名稱(chēng) | 描述 | 備注 |
---|---|---|
id | 它和 Mapper 的命名空間組合起來(lái)使用,是唯一標(biāo)識(shí)符,供 MyBatis 調(diào)用 | 如果命名空間+ id 不唯一,那么 MyBatis 拋出異常 |
parameterType | 傳入 SQL 語(yǔ)句的參數(shù)類(lèi)型的全限定名或別名,它是一個(gè)可選屬性。 | 支持基本數(shù)據(jù)類(lèi)型和 JavaBean、Map 等復(fù)雜數(shù)據(jù)類(lèi)型 |
flushCache | 該屬性用于設(shè)置執(zhí)行該操作后,是否會(huì)清空二級(jí)緩存和本地緩存,默認(rèn)值為 true。 | - |
timeout | 該屬性用于設(shè)置 SQL 執(zhí)行的超時(shí)時(shí)間,如果超時(shí),就拋異常。 | - |
statementType | 執(zhí)行 SQL 時(shí)使用的 statement 類(lèi)型, 默認(rèn)為 PREPARED,可選值:STATEMENT,PREPARED 和 CALLABLE。 | - |
注意:update 標(biāo)簽中沒(méi)有 resultType 屬性,只有查詢(xún)操作才需要對(duì)返回結(jié)果類(lèi)型進(jìn)行相應(yīng)的指定。
傳遞多個(gè)參數(shù)
在上面的示例中,我們?cè)诟抡Z(yǔ)句中只使用了一個(gè) String 類(lèi)型的參數(shù),而在實(shí)際的開(kāi)發(fā)過(guò)程中,大多數(shù)時(shí)候,我們的更新語(yǔ)句都需要使用多個(gè)參數(shù),Mybatis 為我們提供以下 3 種方式,來(lái)實(shí)現(xiàn)給映射器傳遞多個(gè)參數(shù):
- 使用 Map 傳遞參數(shù)
- 使用注解傳遞參數(shù)
- 使用 JavaBean 傳遞參數(shù)
使用 Map 傳遞參數(shù)
可以將參數(shù)封裝到一個(gè) Map 對(duì)象中,然后傳遞給 MyBatis 的映射器 ,在 WebsiteMapper 接口中,定義一個(gè) updateWebsiteByMap() 方法,并使用 Map 傳遞參數(shù)
int updateWebsiteByMap(Map<String, Object> params);
在 WebsiteMapper.xml 使用 update 標(biāo)簽定義一個(gè) update 語(yǔ)句,并接收通過(guò) Map 傳遞的參數(shù)
<!--更新語(yǔ)句接收 Map 傳遞的參數(shù)--> <update id="updateWebsiteByMap" parameterType="map"> update website set name = #{name},url= #{url} where id = #{id} </update>
使用注解傳遞參數(shù)
還可以使用 MyBatis 提供的 @Param 注解給注解器傳遞參數(shù),在 WebsiteMapper 接口中,定義一個(gè) updateWebsiteByParam() 方法,并使用 @Param 注解傳遞參數(shù)
int updateWebsiteByParam(@Param("name") String name, @Param("url") String url, @Param("id") Integer id);
在 WebsiteMapper.xml 中使用 update 標(biāo)簽定義一個(gè) update 語(yǔ)句,并接收通過(guò) @Param 注解傳遞的參數(shù)
<!--更新語(yǔ)句接收 @Param 注解傳遞的參數(shù)--> <update id="updateWebsiteByParam"> update website set name = #{name},url= #{url} where id = #{id} </update>
使用 JavaBean 傳遞參數(shù)
在參數(shù)過(guò)多的情況下,可以將參數(shù)通過(guò) setter 方法封裝到 JavaBean(實(shí)體類(lèi))對(duì)象中傳遞給映射器
<!--更新語(yǔ)句接收 JavaBean 傳遞的參數(shù)--> <update id="updateWebsiteByJavaBean" parameterType="net.cc.www.po.Website"> update website set name = #{name},url= #{url} where id = #{id} </update>
區(qū)別
以上 3 種方式的區(qū)別如下:
- 使用 Map 傳遞參數(shù)會(huì)導(dǎo)致業(yè)務(wù)可讀性的喪失,繼而導(dǎo)致后續(xù)擴(kuò)展和維護(hù)的困難,所以在實(shí)際應(yīng)用中我們應(yīng)該果斷廢棄該方式。
- 使用 @Param 注解傳遞參數(shù)會(huì)受到參數(shù)個(gè)數(shù)的影響。當(dāng) n≤5 時(shí),它是最佳的傳參方式,因?yàn)樗又庇^;當(dāng) n>5 時(shí),多個(gè)參數(shù)將給調(diào)用帶來(lái)困難。
- 當(dāng)參數(shù)個(gè)數(shù)大于 5 個(gè)時(shí),建議使用 JavaBean 方式。
到此這篇關(guān)于MyBatis update標(biāo)簽的文章就介紹到這了,更多相關(guān)MyBatis update標(biāo)簽內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
深入探究 spring-boot-starter-parent的作用
這篇文章主要介紹了spring-boot-starter-parent的作用詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,感興趣的小伙伴可以跟著小編一起來(lái)學(xué)習(xí)一下2023-05-05JSON序列化導(dǎo)致Long類(lèi)型被搞成Integer的坑及解決
這篇文章主要介紹了JSON序列化導(dǎo)致Long類(lèi)型被搞成Integer的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01eclipse中沒(méi)有SERVER的解決辦法(超詳細(xì))
使用eclipse進(jìn)行tomcat配置時(shí),經(jīng)常會(huì)發(fā)現(xiàn)一個(gè)重要的問(wèn)題就是打開(kāi)eclipse之后沒(méi)有了server選項(xiàng),所以本給大家詳細(xì)介紹了eclipse中沒(méi)有SERVER的解決辦法,文中有詳細(xì)的圖文講解,需要的朋友可以參考下2023-12-12詳解如何使用Jersey客戶(hù)端請(qǐng)求Spring Boot(RESTFul)服務(wù)
本篇文章主要介紹了詳解如何使用Jersey客戶(hù)端請(qǐng)求Spring Boot(RESTFul)服務(wù),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-01-01java Timer 定時(shí)每天凌晨1點(diǎn)執(zhí)行任務(wù)
這篇文章主要介紹了java Timer 定時(shí)每天凌晨1點(diǎn)執(zhí)行任務(wù)的代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09詳解關(guān)于java文件下載文件名亂碼問(wèn)題解決方案
這篇文章主要介紹了詳解關(guān)于java文件下載文件名亂碼問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01SpringBoot實(shí)現(xiàn)EMQ設(shè)備的上下線告警
EMQX?的上下線系統(tǒng)消息通知功能在客戶(hù)端連接成功或者客戶(hù)端斷開(kāi)連接,需要實(shí)現(xiàn)設(shè)備的上下線狀態(tài)監(jiān)控,所以本文給大家介紹了如何通過(guò)SpringBoot實(shí)現(xiàn)EMQ設(shè)備的上下線告警,文中有詳細(xì)的代碼示例,需要的朋友可以參考下2023-10-10