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

发布于 2022-09-07 04:23:30 字数 1408 浏览 39 评论 0

使用注解的方式并且使用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();
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文