在使用Redis传入mysql查询数据时,mysql返回的数据默认按照id顺序返回,与所传入的参数顺序不一致,此时解决办法,在mysql语句中添加ORDER BY FIELD(字段名,具体的顺序).
在spring中应如下操作:
首先将redis想插入到mysql的数据按照顺序进行转换为字符串的形式:
String idStr = StrUtil.join(",",ids);
然后在查询时将语句修改为如下语句:
List<UserDTO> userDTOList = userService.query().in("id",ids)
.last("ORDER BY FIELD(id," + idStr + ")").
list().stream().map(
user -> BeanUtil.copyProperties(user, UserDTO.class))
.collect(Collectors.toList());
其中 in 表示指示的字段的名称, .last表示添加的最后一句sql语句,手动指定了需要的顺序.
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/88840.html