我想在myBatis中编写类似的内容(使用anotations而不是XML):
@Insert("INSERT INTO friendships (user_id, friend_id) VALUES (#{user.id}, {friend.id})")
public void insert(User user, User friend);
这可能吗?究竟怎么样?
(注意,我想使用User类型的对象进行类型安全。我知道使用int参数并使用#{1}和#{2}作为占位符可以工作)
答案 0 :(得分: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)
答案 1 :(得分: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();
}
}
并将Mapper改为:
@Insert("INSERT INTO friendships (user_id, friend_id) VALUES (#{userId}, #{friendId})")
public void insert(Friendship friendship);