1

myBatisで次のようなものを書きたいと思います(XMLの代わりに注釈を使用):

@Insert("INSERT INTO friendships (user_id, friend_id) VALUES (#{user.id}, {friend.id})")
public void insert(User user, User friend);

これは可能ですか?どのくらい正確に?

(注:type-saftyにはタイプUserのオブジェクトを使用したいと思います。intパラメーターを使用し、プレースホルダーとして#{1}と#{2}を使用すると機能することを知っています)

4

2 に答える 2

2

注釈を使用して、複数の入力パラメーターに名前空間を提供できます。これらは基本的に #{1.foo} および #{2.bar} 識別子に適切な名前を付けます。

@Insert("INSERT INTO friendships (user_id, friend_id) VALUES (#{user.id}, 
#{friend.id})")
public void insert(@Param(value="user") User user, @Param(value="friend") User friend)
于 2011-04-27T20:46:36.937 に答える
0

これは不可能のように思われるので、ラッパー クラスを作成しました。

class Friendship {

  private final User user;
  private final User friend;

  public Friendship(User user, User friend) {
        this.user = user;
        this.friend = friend;
  }

  public int getUserId(){
        return user.getId();
  }

  public int getFriendId(){
        return friend.getId();
  }
}

そしてマッパーをこれに変更しました:

@Insert("INSERT INTO friendships (user_id, friend_id) VALUES (#{userId}, #{friendId})")
public void insert(Friendship friendship);
于 2010-09-30T09:13:26.860 に答える