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();
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论