Comment ajouter plusieurs paramètres nommés à l'instruction SQL?
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)
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