在做查询的h时候, 我们会遇到上一页、下一页这样的需求, 这时候使用 id + 1 和 id -1 来做查询是不能够完成需求的, 因为会遇到有的 id 被删除而导致id 不连贯的一个情况。
Spring boot == 2.2.4
Mybatis Plus == 3.0.5
此时我们只需要对查询做个排序然后取单个结果就可以
//上一篇 SELECT * FROM new_info WHERE nid<9 ORDER BY nid DESC LIMIT 1;
//下一篇 SELECT * FROM new_info WHERE nid>9 ORDER BY nid ASC LIMIT 1;
这个 9 只是做个简单的示范, 表示当前的 id 。
使用Mybatis Plus 的代码也很简单, 直接使用条件构造器即可完成需求
Mybatis Plus 中关于大于小于的条件构造器API
ne 不等于 <>
gt 大于 >
ge 大于等于 >=
lt 小于 <
le 小于等于 <=
last("sql code ")
between BETWEEN 值1 AND 值2
首先 测试 sql 语句
1、数据库如下
2、测试上一篇(以 id = 10 为例子)
2、测试下一篇(以 id = 10 为例子)
使用 Mybatis Plus 测试
1、上一篇
@Override
public Sysnews getPrenews(Integer id) {
QueryWrapper<Sysnews> wrapper = new QueryWrapper<>();
wrapper.
lt("news_id", id) // 小于
.orderByDesc("news_id")
.last("limit 1");
Sysnews one = sysnewsMapper.selectOne(wrapper);
return one;
}
2、下一篇
@Override
public Sysnews getLastnews(Integer id) {
// SELECT * FROM new_info WHERE nid< 9 ORDER BY nid DESC LIMIT 1;
QueryWrapper<Sysnews> wrapper = new QueryWrapper<>();
wrapper.
gt("news_id", id) // 大于
.orderByAsc("news_id")
.last("limit 1");
Sysnews one = sysnewsMapper.selectOne(wrapper);
if (one == null) {
}
return one;
}
更多推荐
Spring boot + Mybatis Plus实现上一页、下一页功能。
发布评论