Frage

Ich möchte etwas schreiben wie dies in Mybatis (anotations statt XML):

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

Ist das möglich? Wie genau?

(Beachten Sie, ich möchte Objekte vom Typ Benutzer verwenden für Typ-Safty. Ich weiß, dass int Parameter und die Verwendung # mit {1} und {2} # als Platzhalter funktionieren würde)

War es hilfreich?

Lösung

Sie können Anmerkungen verwenden, um einen Namespace für mehrere Eingangsparameter zu liefern. Diese geben im Wesentlichen schönen Namen die # {1.foo} und {# 2.bar} Bezeichner.

@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)

Andere Tipps

Es scheint, wie dies nicht möglich ist, so dass ich eine Wrapper-Klasse erstellt:

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();
  }
}

Und den Mapper dazu geändert:

@Insert("INSERT INTO friendships (user_id, friend_id) VALUES (#{userId}, #{friendId})")
public void insert(Friendship friendship);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top