我想在mybatis中写下这样的东西(使用anotations而不是XML):

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

这可能吗?到底怎么样?

(请注意,我想将类型用户的对象用于类型。

有帮助吗?

解决方案

您可以使用注释为多个输入参数提供名称空间。这些本质上是给#{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)

其他提示

看来这是不可能的,所以我创建了一个包装班:

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);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top