Mybatis中@Param註解的用法詳解

1、概述

首先明確這個註解是為SQL語句中參數賦值而服務的。

@Param的作用就是給參數命名,比如在mapper裡面某方法A(int id),當添加註解後A(@Param("userId") int id),也就是說外部想要取出傳入的id值,隻需要取它的參數名userId就可以瞭。將參數值傳如SQL語句中,通過#{userId}進行取值給SQL的參數賦值。

2、實例:

實例一:@Param註解基本類型的參數

mapper中的方法:

public User selectUser(@Param("userName") String name,@Param("password") String pwd);

映射到xml中的<select>標簽

<select id="selectUser" resultMap="User">  
   select * from user  where user_name = #{userName} and user_password=#{password}  
</select>

其中where user_name = #{userName} and user_password = #{password}中的userName和password都是從註解@Param()裡面取出來的,取出來的值就是方法中形式參數 String name 和 String pwd的值。

實例二:@Param註解JavaBean對象

SQL語句通過@Param註解中的別名把對象中的屬性取出來然後復制

mapper中的方法: 

public List<User> getAllUser(@Param("user") User u);

映射到xml中的<select>標簽

<select id="getAllUser" parameterType="com.vo.User" resultMap="userMapper">  
        select   
        from user t where 1=1  
             and   t.user_name = #{user.userName}  
              and   t.user_age = #{user.userAge}  
    </select>  

3、註意點

當使用瞭@Param註解來聲明參數的時候,SQL語句取值使用#{},${}取值都可以。

當不使用@Param註解聲明參數的時候,必須使用的是#{}來取參數。使用${}方式取值會報錯。

不使用@Param註解時,參數隻能有一個,並且是Javabean。在SQL語句裡可以引用JavaBean的屬性,而且隻能引用JavaBean的屬性。

    @Select("SELECT * from Table where id = #{id}")
    Enchashment selectUserById(User user);

附:為什麼要用@param

首先解釋一下為毛要用這個東西

當在查詢的時候,一個參數的時候,在直接在入參中寫入就可以瞭,但是當兩個參數的時候,怎麼辦?

兩種辦法:第一用Map ,第二:就用@param,[可讀性比較好,參數少的時候]

註意:當參數為2-5個時候,用@param最佳,當大於5的時候,肯定會選擇map瞭

舉例說明:

<select id="findRoleByMap" parameterType="map" resultType="role">
    SELECT id,name FROM t_role
    WHERE roleName=#{roleName}
    AND note=#{note}
<select>

總結

到此這篇關於Mybatis中@Param註解用法的文章就介紹到這瞭,更多相關@Param註解用法內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: