Mybatis 使用SQLProvider的方式做批量查询操作出错

使用注解的方式并且使用SQLProvider的方式做查询操作出错
直接使用注解是可以的,但是用SQLProvider就不行。

// 这样是可以的
@Select({
    "<script>"
        + "SELECT avator FROM t_user "
        + "WHERE id IN "
        + "<foreach item='item' collection='list' open='(' separator=',' close=')'>"
        + "#{item}"
        + "</foreach>"
  + "</script>"
})
List<String> getAvator(List<Integer> userIds);

尝试了下边两种都不行

// 接口
@SelectProvider(type = UserSql.class, method = "getAvator2")
List<String> getAvator2(@Param("list")List<Integer> userIds);

@SelectProvider(type = UserSql.class, method = "getAvator3")
List<String> getAvator3(String userIds);  // 传进去 4,5,6,7 这样的字符串

// SQL
public String getAvator2(List<Integer> userIds) {
   
    StringBuilder sql = new StringBuilder()
            .append("SELECT avator FROM ")
            .append(TABLE_NAME)
            .append(" <foreach item='item' collection='list' open='(' separator=',' close=')'>")
            .append(" #{item}")
            .append(" </foreach>");       
    return sql.toString();
}

public String getAvator3(String userIds) {
   
    StringBuilder sql = new StringBuilder()
            .append("SELECT avator FROM ")
            .append(TABLE_NAME)
            .append(" WHERE id IN (#{userIds})");
    return sql.toString();
}

阅读 5.3k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题