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!
推薦閱讀:
- 解讀Mapper與Mapper.xml文件之間匹配的問題
- mybatis映射和實際類型不一致的問題
- mybatis3中@SelectProvider傳遞參數方式
- Mybatis中resultMap的Colum和property屬性詳解
- 解決mybatis #{}無法自動添加引號的錯誤