通用mapper多条件分页查询

程序yang
优质创作者: 编程框架技术领域
2021-04-01 04:47:05
第一次使用,还不太熟悉,有用过的大佬,可以给个源码看看嘛
...全文
621 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序yang 2021-04-02
  • 打赏
  • 举报
回复
引用 12 楼 明白畅达 的回复:
[quote=引用 11 楼 程序yang 的回复:]

@Override
    public PageInfo<User> findPages(int pageNum, int pageSize) {
        //分页
        PageHelper.startPage(pageNum, pageSize);
        //查询
        List<User> userList = userMapper.selectAll();
        // 分页信息 使用 pageInfo
        PageInfo<User> info = new PageInfo<>(userList);
        return new PageInfo<>(userList);
    }
比如这个方法,如果使用selectAll(),是不是就没有分页作用了?
有分页,而且你请求一下不就看出结果了吗[/quote] 发现问题所在了,是依赖问题, 之前引用的是这个,使用PageHelper.startPage(pageNum, pageSize);分页就会没效果

<!-- pagehelper分页插件 -->
        <!--        <dependency>-->
        <!--            <groupId>com.github.pagehelper</groupId>-->
        <!--            <artifactId>pagehelper</artifactId>-->
        <!--            <version>4.1.0</version>-->
        <!--        </dependency>-->
        <!--pagehelper -->
改为这个就可以了
引用
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.10</version> </dependency>
是因为它要依赖这个pagehelper-spring-boot-starter
程序yang 2021-04-02
  • 打赏
  • 举报
回复
看不到效果,始终返回总数,就是分页的第二个参数,始终是数据总数,就相当于一页显示完了
明白畅达 2021-04-02
  • 打赏
  • 举报
回复
引用 11 楼 程序yang 的回复:

@Override
    public PageInfo<User> findPages(int pageNum, int pageSize) {
        //分页
        PageHelper.startPage(pageNum, pageSize);
        //查询
        List<User> userList = userMapper.selectAll();
        // 分页信息 使用 pageInfo
        PageInfo<User> info = new PageInfo<>(userList);
        return new PageInfo<>(userList);
    }
比如这个方法,如果使用selectAll(),是不是就没有分页作用了?
有分页,而且你请求一下不就看出结果了吗
程序yang 2021-04-02
  • 打赏
  • 举报
回复

@Override
    public PageInfo<User> findPages(int pageNum, int pageSize) {
        //分页
        PageHelper.startPage(pageNum, pageSize);
        //查询
        List<User> userList = userMapper.selectAll();
        // 分页信息 使用 pageInfo
        PageInfo<User> info = new PageInfo<>(userList);
        return new PageInfo<>(userList);
    }
比如这个方法,如果使用selectAll(),是不是就没有分页作用了?
程序yang 2021-04-02
  • 打赏
  • 举报
回复

//分页是参数,当前页数,每页显示数量
        PageHelper.startPage(pageNum, pageSize);
想知道这个可不可以实现分页,配合哪个查询方法使用的?
程序yang 2021-04-02
  • 打赏
  • 举报
回复

 @Override
    public PageInfo<User> findPagess(String appId, int pageNum, int pageSize) {
        // 创建 Example对象 负责条件查询
        Example example = new Example(User.class);
        // 按id查询
        example.createCriteria().andEqualTo("appId", appId);
        // 创建 RowBounds对象 负责分页查询 第一个参数index,第二个参数每页展示条数
        RowBounds rowBounds = new RowBounds((pageNum - 1) * pageSize, pageSize);
        // 集成 按条件查询并分页 将两个对象放到继承Mapper接口的接口中
        List chapters = userMapper.selectByExampleAndRowBounds(example, rowBounds);
        return new PageInfo<>(chapters);
    }
修改了一下,好像这样子可以实现了,不知道写法是否正确?
明白畅达 2021-04-02
  • 打赏
  • 举报
回复
引用 4 楼 程序yang 的回复:
[quote=引用 2 楼 明白畅达 的回复:]用pagehelper就可以
把它放到selectByExampleAndRowBounds(example,pageHelper)这里吗?试了会报错[/quote]什么意思?selectByExampleAndRowBounds不是你自己写的方法?不用传给他pagehelper写在返回的List上面直接帮你分页,PageInfo是对分页结果进行包装吧,不写也能生效 代码: PageHelper.startPage(pageNum, pageSize); List<Car> list = list(queryWrapper); PageInfo page = new PageInfo(list);//可省略
程序yang 2021-04-02
  • 打赏
  • 举报
回复
引用 5 楼 LhLMy666666 的回复:
应该返回PageInfo对象的呀,不然怎么分页生效
有对应案例参考么?
LhLMy666666 2021-04-01
  • 打赏
  • 举报
回复
应该返回PageInfo对象的呀,不然怎么分页生效
程序yang 2021-04-01
  • 打赏
  • 举报
回复
引用 2 楼 明白畅达 的回复:
用pagehelper就可以
把它放到selectByExampleAndRowBounds(example,pageHelper)这里吗?试了会报错
明白畅达 2021-04-01
  • 打赏
  • 举报
回复
用pagehelper就可以
程序yang 2021-04-01
  • 打赏
  • 举报
回复

 @Override
    public List<User> findPage(String appId, int pageNum, int pageSize) {
        //分页
        PageHelper pageHelper = new PageHelper();

        //过滤
        Example example = new Example(User.class);
        Example.Criteria criteria = example.createCriteria();
        if (appId != null) {
            criteria.andEqualTo("appId", appId);
        }
//        if (StringUtils.isNotBlank(appId)) {
//            //过滤条件
//            example.createCriteria().orLike("username", "%" + key.toLowerCase() + "%").orEqualTo("phone",key.toLowerCase());
//        }
        //分页是参数,当前页数,每页显示数量
        pageHelper.startPage(pageNum, pageSize);
        //查询
        //List<User> userList = userMapper.selectByExample(example);
        List<User> userList = userMapper.selectByExampleAndRowBounds(example,));
        return userList;
    }

分页查询是不是调用selectByExampleAndRowBounds这个方法? 里面的参数,第二个怎么写?
在现代Java Web开发中,Spring Boot框架以其便捷的配置和快速的应用开发能力备受青睐。 而MyBatis作为轻量级的持久层框架,通过XML或注解的方式将SQL语句与Java代码分离,大大提高了开发效率。 在这个项目中,我们看到了如何将MyBatis与Spring Boot进行深度整合,并引入了通用Mapper和PageHelper两个实用工具,进一步简化了数据库操作和分页处理。 `MyBatis`是MyBatis-Spring的集成,它为Spring环境下的MyBatis提供了一个简单的配置和强大的事务管理。 通过Spring的Bean管理,我们可以方便地在Service层注入Mapper接口,无需编写DAO层,使得代码更加简洁。 通用Mapper(`tk.mybatis.mapper`)是由tk.mybatis团队开发的一个MyBatis插件,它的核心功能是提供了通用的CRUD操作,包括增删改查等基本数据库操作。 先展示下效果 https://pan.quark.cn/s/a4b39357ea24 通过继承通用Mapper接口,开发者可以快速实现对数据库的基本操作,无需手动编写大量重复的SQL语句,从而提高开发效率。 同时,通用Mapper还支持动态SQL,使得复杂查询也能轻松应对。 PageHelper(`com.github.pagehelper`)是MyBatis的分页插件,它能够自动处理SQL的分页逻辑,支持多种数据库,如MySQL、Oracle等。 使用PageHelper,开发者只需要在Mapper接口的方法上添加分页注解,就可以实现物理分页。 PageHelper的优势在于它能够处理复杂的分页场景,例如排序、条件查询等,且性能高效,减少了开发工作量。 在...

81,116

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧