欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

MyBatis中@Param注解的四種使用場景,最后一種經(jīng)常被人忽略!

有一些小伙伴覺得 MyBatis 只有方法中存在多個參數(shù)的時候,才需要添加 @Param 注解,其實這個理解是不準(zhǔn)確的。即使 MyBatis 方法只有一個參數(shù),也可能會用到 @Param 注解。
但是,在你總結(jié)出規(guī)律之前,你可能會覺得莫名其妙,有的時候一個參數(shù)明明不用添加 @Param 注解,有的時候,卻需要添加,不添加會報錯。
MyBatis 中 @Param 注解的四種使用場景,最后一種經(jīng)常被人忽略!

創(chuàng)新互聯(lián)建站是一家網(wǎng)站設(shè)計公司,集創(chuàng)意、互聯(lián)網(wǎng)應(yīng)用、軟件技術(shù)為一體的創(chuàng)意網(wǎng)站建設(shè)服務(wù)商,主營產(chǎn)品:響應(yīng)式網(wǎng)站開發(fā)成都品牌網(wǎng)站建設(shè)、成都全網(wǎng)營銷。我們專注企業(yè)品牌在網(wǎng)站中的整體樹立,網(wǎng)絡(luò)互動的體驗,以及在手機等移動端的優(yōu)質(zhì)呈現(xiàn)。成都網(wǎng)站設(shè)計、網(wǎng)站制作、移動互聯(lián)產(chǎn)品、網(wǎng)絡(luò)運營、VI設(shè)計、云產(chǎn)品.運維為核心業(yè)務(wù)。為用戶提供一站式解決方案,我們深知市場的競爭激烈,認(rèn)真對待每位客戶,為客戶提供賞析悅目的作品,網(wǎng)站的價值服務(wù)。

有的人會覺得這是 MyBatis 各個版本差異的鍋,不可否認(rèn),MyBatis 發(fā)展很快,不同版本之間的差異還挺明顯的,不過這個加不加 @Param 注解的問題,卻并不是版本的鍋!今天松哥就和大家來聊一聊這個問題,到底哪些情況下需要添加 @Param 注解。
首先,如下幾個需要添加 @Param 注解的場景,相信大家都已經(jīng)有共識了:
第一種:方法有多個參數(shù),需要 @Param 注解

@Mapper
public interface UserMapper {
    Integer insert(@Param("username") String username, @Param("address") String address);
}

對應(yīng)的 XML 文件如下:

<insert id="insert" parameterType="org.javaboy.helloboot.bean.User">
    insert into user (username,address) values (#{username},#{address});
</insert>

這是最常見的需要添加 @Param 注解的場景。
MyBatis 中 @Param 注解的四種使用場景,最后一種經(jīng)常被人忽略!

第二種:方法參數(shù)要取別名,需要 @Param 注解
當(dāng)需要給參數(shù)取一個別名的時候,我們也需要 @Param 注解,例如方法定義如下:

@Mapper
public interface UserMapper {
    User getUserByUsername(@Param("name") String username);
}

對應(yīng)的 XML 定義如下:

<select id="getUserByUsername" parameterType="org.javaboy.helloboot.bean.User">
    select * from user where username=#{name};
</select>

老實說,這種需求不多,費事。
MyBatis 中 @Param 注解的四種使用場景,最后一種經(jīng)常被人忽略!

第三種:XML 中的 SQL 使用了 $ ,那么參數(shù)中也需要 @Param 注解
會有注入漏洞的問題,但是有的時候你不得不使用符號,例如要傳入列名或者表名的時候,這個時候必須要添加 @Param 注解,例如:

@Mapper
public interface UserMapper {
    List<User> getAllUsers(@Param("order_by")String order_by);
}

對應(yīng)的 XML 定義如下:

<select id="getAllUsers" resultType="org.javaboy.helloboot.bean.User">
    select * from user
    <if test="order_by!=null and order_by!=''">
        order by ${order_by} desc
    </if>
</select>

前面這三種,都很容易懂,相信很多小伙伴也都懂,除了這三種常見的場景之外,還有一個特殊的場景,經(jīng)常被人忽略。
MyBatis 中 @Param 注解的四種使用場景,最后一種經(jīng)常被人忽略!

第四種,那就是動態(tài) SQL ,如果在動態(tài) SQL 中使用了參數(shù)作為變量,那么也需要 @Param 注解,即使你只有一個參數(shù)。
如果我們在動態(tài) SQL 中用到了 參數(shù)作為判斷條件,那么也是一定要加 @Param 注解的,例如如下方法:

@Mapper
public interface UserMapper {
    List<User> getUserById(@Param("id")Integer id);
}

定義出來的 SQL 如下:

<select id="getUserById" resultType="org.javaboy.helloboot.bean.User">
    select * from user
    <if test="id!=null">
        where id=#{id}
    </if>
</select>

這種情況,即使只有一個參數(shù),也需要添加 @Param 注解,而這種情況卻經(jīng)常被人忽略!
好了,不知道大家有沒有 GET 到呢?有問題歡迎留言討論。

網(wǎng)頁標(biāo)題:MyBatis中@Param注解的四種使用場景,最后一種經(jīng)常被人忽略!
轉(zhuǎn)載源于:http://chinadenli.net/article32/ppgppc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT標(biāo)簽優(yōu)化、外貿(mào)建站、網(wǎng)站營銷網(wǎng)站策劃、搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司