Question

Je voudrais écrire quelque chose comme ça dans mybatis (à l'aide de XML au lieu anotations):

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

Est-ce possible? De quelle façon précisément?

(Note, je voudrais utiliser je sais que l'utilisation de paramètres int et de l'utilisation # Les objets de type utilisateur pour type safty. {1} et # {2} comme des espaces réservés travailleraient)

Était-ce utile?

La solution

Vous pouvez utiliser les annotations pour fournir un espace de noms pour les paramètres d'entrée multiples. Ces essentiellement donnent des noms agréables aux identifiants # {} et de 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)

Autres conseils

Il semble que ce n'est pas possible, donc je créé une classe d'emballage:

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

Et a changé le Mapper à ceci:

@Insert("INSERT INTO friendships (user_id, friend_id) VALUES (#{userId}, #{friendId})")
public void insert(Friendship friendship);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top