1。概要
まず第一に、この注釈がSQLステートメントでのパラメーター割り当て用であることは明らかです。
@Paramの役割は、アノテーションが追加されたときに、マッパーのメソッドA(int id)などのパラメーターに名前を付けることです。A(@Param( "userId")int id)は、外部が渡されたID値を取り出し、そのパラメーター名userIdを取り出します。SQLステートメントのようにパラメーター値を渡し、#{userId}を介して値をSQLパラメーターに割り当てます。
2.例:
例1:@Paramは基本的なタイプのパラメーターに注釈を付けます
マッパーのメソッド:
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>
user_name =#{userName}およびuser_password =#{password}の場合、userNameとpasswordはすべてアノテーション@Param()から取得され、取得される値は正式なパラメーターStringnameとStringpwdの値です。メソッドで。
例2:@ParamアノテーションJavaBeanオブジェクト
SQLステートメントは、@ Paramアノテーションのエイリアスを使用して、オブジェクトの属性を取り出し、それをコピーします
マッパーのメソッド:
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アノテーションが使用されていない場合、パラメーターは1つだけであり、それはJavabeanです。JavaBeanプロパティはSQLステートメントで参照でき、JavaBeanプロパティのみを参照できます。
@Select("SELECT * from Table where id = ${id}")
Enchashment selectUserById(User user);