在做查询的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实现上一页、下一页功能。