精华内容
下载资源
问答
  • page 分页
    千次阅读
    2021-02-05 16:57:50

    ###Controller

    创建变量表示共多少页

    @RequestParam(defaultValue = "1",required = true)Integer page
    
    //使用pageHelper实现分页(pageNum表示当前是第几页,pageSize表示每页显示多少行)
    PageHelper.startPage(page,5);
    //模糊查询
    List<News> likeall =newsService.selectLikeAll(meag,name);
    //将查询到的值导入到page对象中
    PageInfo<News> pa=new PageInfo<>(likeall);
    //保存分页信息
    model.addAttribute("likell",likeall);
    model.addAttribute("page",pa);
    
    //表示一共分了多少页
    pa.getPages();
    //表示一共有多少条数据
    pa.getTotal();
    
    

    ###前端页面

        <p>每页${page.pageSize }条 当前页${page.size }条${page.pageNum }/${page.pages }页
    						总条数${page.total }</p>
        <c:if test="${page.isFirstPage==true }">
              <a>首页</a>
        </c:if> 
       <c:if test="${page.isFirstPage==false }">
          <a href="/selectAllClientInfo">首页</a>
       </c:if> 
       <c:if test="${page.hasPreviousPage==true }">
          <a href="/selectAllClientInfo?page=${page.prePage }">上一页</a>
       </c:if> 
       <c:if test="${page.hasPreviousPage==false }">
          <a>上一页</a>
       </c:if> 
       <c:if test="${page.hasNextPage==true }">
          <a href="/selectAllClientInfo?page=${page.nextPage }">下一页</a>
       </c:if> <c:if test="${page.hasNextPage==false }">
          <a>下一页</a>
       </c:if> <c:if test="${page.isLastPage==true }">
          <a>末页</a>
       </c:if> <c:if test="${page.isLastPage==false }">
          <a href="/selectAllClientInfo?page=${page.pages }">末页</a>
       </c:if>
    
    
    更多相关内容
  • Page分页失效的问题以及解决方案

    千次阅读 2022-01-05 14:03:40
    最近遇到一个问题,在我的项目中页面的分页突然失效了? 通过查看历史的修改发现在我对查询的List进行了操作之后,Total无法正常返回导致分页失效了。 目前有2种解决方案,这里就只讲解最容易理解和书写的。 源...

    最近遇到一个问题,在我的项目中页面的分页突然失效了?

    通过查看历史的修改发现在我对查询的List进行了操作之后,Total无法正常返回导致分页失效了。

    目前有2种解决方案,这里就只讲解最容易理解和书写的。

    源代码:

    Page<xx> page = new Page<>(curPage, pageSize);
    PageHelper.startPage(curPage, pageSize);
    //获取list
    List<xx> list = sql;
    //list操作
    list.for..
    PageInfo<xx> pageInfo = new PageInfo<>(list);
    page.setList(pageInfo.getList());
    page.setCount(pageInfo.getTotal());
    
    return page;

    修改方案一:对PageInfo中的list进行操作

    Page<xx> page = new Page<>(curPage, pageSize);
    PageHelper.startPage(curPage, pageSize);
    //获取list
    List<xx> list = sql;
    PageInfo<xx> pageInfo = new PageInfo<>(list);
    //list操作
    List<xx> info = pageInfo.getList
    info.foreach.....
    
    page.setList(pageInfo.getList());
    page.setCount(pageInfo.getTotal());
    
    return page;

     上述代码中的listinfo,并不表示同一个列表,我们之前直接对list进行操作并不会对PageInfo的属性值产生影响所以没有效果,但是对它本身的列表操作是能作用到它本身。

    修改方案二:手动分页+设置Total

    原本先设定分页参数,现在改为先获取list再进行分页操作:

    //获取list
    List<xx> list = sql;
    //list操作
    list.for..
    Page<xx> page = new Page<>(curPage, pageSize);
    // 内存分页
    List<xx> list = list.subList((curPage - 1) * pageSize,
                        curPage * pageSize > list.size() ? list.size() : curPage * pageSize);
    PageInfo<xx> pageInfo = new PageInfo<>(list);
    page.setList(pageInfo.getList());
    page.setCount(list.size());
    
    return page;

    附加:因PageHelper合理化配置默认为ture导致分页可超出最大页数的问题

    设置PageHelper参数为false即可

    PageHelper.startPage(curPage, pageSize, false);

    如果需要全局解决这个问题,这里需要对mybatis的配置进行修改

    将PageHelper中"offsetAsPageNum"或者sqlSessionFactory中"reasonable"设置为"false"即可

    其他参数可自行查阅文档了解其用途

    public class MyBatisConfig {
    
        @Bean
        public PageHelper pageHelper(){
            PageHelper pageHelper=new PageHelper();
            Properties properties=new Properties();
            //把这个设置为true,会带RowBounds第一个参数offset当成PageNum使用
            properties.setProperty("offsetAsPageNum","true");
            //设置为true时,使用RowBounds分页会进行count查询
            properties.setProperty("rowBoundsWithCount","true");
            properties.setProperty("reasonable","true");
            pageHelper.setProperties(properties);
            return pageHelper;
        }
        //自定义方法
        @Bean(name = "sqlSessionFactory")
        public SqlSessionFactory sqlSessionFactoryBean(@Qualifier("dataSource") DataSource dataSource) {
            SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
            bean.setDataSource(dataSource);
    
            PageInterceptor pageInterceptor = new PageInterceptor();
            Properties properties = new Properties();
            properties.setProperty("reasonable", "true");
            properties.setProperty("supportMethodsArguments", "true");
            properties.setProperty("returnPageInfo", "check");
            properties.setProperty("params", "count=countSql");
            pageInterceptor.setProperties(properties);
    
            // 添加插件
            bean.setPlugins(new Interceptor[]{pageInterceptor});
    
            // 添加XML目录
            ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
            try {
                bean.setMapperLocations(resolver.getResources("classpath:mapper/**/*.xml"));
                bean.setConfigLocation(resolver.getResource("classpath:mybatis-config.xml"));
                return bean.getObject();
            } catch (Exception e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            }
        }
    }

    展开全文
  • MyBatis-Plus(四.Page分页查询)

    千次阅读 2021-12-06 20:48:34
    关于MyBatis-Plus分页查询的简单使用

    在已经集成了Mybatis Plus的SpringBoot项目中加入如下分页拦截器的配置,让MybatisPlus支持分页

    @Configuration
    public class MybatisPlusConfiguration {
        //配置分页拦截器
        @Bean
        public MybatisPlusInterceptor getMybatisPlusInterceptor(){
            MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
            interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
            return interceptor;
        }
    }

    不配置分页拦截器查询的时候selectPage默认查询全部

    Page类实现分页查询

    @SpringBootTest
    public class PageTest{
    ​
        @Autowired
        UserMapper userMapper;
    ​
        // 普通分页查询
        @Test
        public void testPage(){
            Page<User> page = new Page<>(2, 3);
            // 第二页, 每页三行
            final Page<User> page1 = userMapper.selectPage(page, null); // 后面也可以加Wrapper
            page.getRecords().forEach(System.out::println); // 既可以取参数的page
            page1.getRecords().forEach(System.out::println); // 也可以取返回的page1
            // 两种方法取得分页结果
            System.out.println(page.getCurrent()); // 当前页
            System.out.println(page.getSize()); // 每页大小
            System.out.println(page.getPages()); // 总页数
            System.out.println(page.getRecords()); // 这一页的内容List集合
        }
        
        // 返回值是Map的分页查询
        @Test
        public void testMap(){
            Page<Map<String, Object>> page = new Page<>(2, 3, false);
            // 注意Page里的泛型是Map
            Page<Map<String, Object>> mapPage = userMapper.selectMapsPage(page, null);
            System.out.println(mapPage);
        }
    }

    注意这种做法的策略是先查询所有页, 然后从所有页中查询你想要的页

    如果定义Page时第三个参数searchCount(是否查询所有)为false, 那么不会查询所有字段, 直接查询某一页

    Page<User> page = new Page<>(2, 3, false);
    // 第三个参数是是否查询所有

    展开全文
  • spring-data集成page分页

    千次阅读 2020-08-10 15:54:09
    Springdata集成page分页分析 1、Page<>是一个遵循JPA规范的分页接口,里面的泛型是对应封装的domain类 2、下面代码主要是我在使用mongodb数据库时的,查询分页方法 3、Page<>本身只是一个接口,一般的...

    Springdata集成page分页分析

    1、Page<>是一个遵循JPA规范的分页接口,里面的泛型是对应封装的domain类

    2、下面代码主要是我在使用mongodb数据库时的,查询分页方法

    3、Page<>本身只是一个接口,一般的分页插件或者自定义分页类都需要去返回一个分页结果集,也就是实例对象;所以这里就直接返回Page<>的实现类对象,PageImpl<>的构造器如下

    public PageImpl(List<T> content, Pageable pageable, long total) {
        super(content, pageable);
        this.total = (Long)pageable.toOptional().filter((it) -> {
            return !content.isEmpty();
        }).filter((it) -> {
            return it.getOffset() + (long)it.getPageSize() > total;
        }).map((it) -> {
            return it.getOffset() + (long)content.size();
        }).orElse(total);
    }
    public PageImpl(List<T> content) {
    	this(content, Pageable.unpaged(), null == content ? 0L : (long)content.size());
    }
    //其实也都要调用第一个构造器
    

    List content:数据列表

    Pageable pageable:封装分页数据对象,也就是currentPage 和 pageSize

    total:数据总数

    4、但是PageImpl的构造方法中,List content的是不能为null的,因为方法中调用了父类构造器super(content, pageable);

    Assert.notNull(content, "Content must not be null!");
    

    一旦为空就会报错

    5、所以肯定是要先判断数据的数量的,方法如下

    @Autowired
    //1)创建mongodb查询模板
    private MongoTemplate template; 
    
    public Page<Region> query(RegionQueryObjecy qo) {
            //2)语句对象query  封装查询条件,在高级查询的时候使用
            Query query = new Query();
        	//3)判断数据的数量
            long total = template.count(query, Region.class);
            if (total==0){
                return Page.empty();
            }
    		//4)PageRequest是封装查询方法,然后返回pageable对象,给PageImpl的构造方法使用
            Pageable pageable = PageRequest.of(qo.getCurrentPage() - 1, qo.getPageSize(), Sort.Direction.DESC, "_id");
        	//5)字太多放下面
            query.with(pageable);
        	//6)获取数据列表
            List<Region> list = template.find(query, Region.class);
    		//7)获取查询结果集
            return new PageImpl<>(list,pageable,total);
        }
    

    6)此时pageable和total都有了,还差个list,三大参数还差一个;因为有了pageable对象,可以用query的with方法,把pageable中的查询条件,一个个抽出来封装到query中,不然的话,就要一个一个重新加进去同query.skip(qo.getCurrentPage()).limit(qo.getPageSize()).with(new Sort(Sort.Direction.ASC,“id”));

    7)这个例子主要是使用query与数据库交互查询获取list和total,然后再加个pageable就可以获取到查询结果集啦

    博主码字不易,觉得有帮助的点个赞哦
    在这里插入图片描述

    展开全文
  • iview ui的page分页组件的使用

    千次阅读 2020-09-11 10:11:37
      最近一直在找分页,终于找到了一个较为简洁的插件网站(iview),里面只是给了简单的应用跟API,下面让我们结合一下例子。 1、引入iview   虽然这里引入的是在线资源,但实际开发还是要使用本地资源比较好。 &...
  • Page分页组件

    千次阅读 2018-01-04 15:21:28
    此时page会进struts值栈,在page分页组件中有一个属性是links用来存放分页条,在页面通过${links}的方式来获取这个分页条(此分页条是手动拼接出来的) page分页组件代码如下: import java....
  • PageHelper.startPage 分页的坑

    千次阅读 2020-02-27 15:32:40
    之前一直没用过PageHelper.startPage分页,都是自己在项目配置的自定义分页,这次开发的项目里,大家用的是这个,用的时候碰到一个问题,现记录下。 项目要求做一块实时仓库信息大屏来动态显示数据。因为有些地方...
  • PageHelper.startPage分页无效

    千次阅读 2020-07-01 10:32:11
    在你需要进行分页的 MyBatis 查询方法前调用 PageHelper.startPage 静态方法即可,紧跟在这个方法后的第一个MyBatis 查询方法会被进行分页。 无论是在控制层还是服务层一定要注意它的位置。
  • list转page分页

    千次阅读 2019-09-03 14:37:33
    private List listToPage(int currentPage, int rows, List list) { currentPage = (currentPage - 1) * rows; //每页的起始索引 Integer sum = list.size(); //记录总数 if (currentPage + rows &g...
  • new 出一个Page作为参数传给 Mapper 就是这么简单就可以实现自己的sql也可以分页
  • Spring jpa 使用page 分页

    千次阅读 2019-06-24 16:12:43
    不多说上代码 ...public Page<CarInfoOrm> findByBrandIdIn(List<CarBrandOrm> brandOrms,Pageable pageable); 第二种模式,使用PageImpl进行分页: List<CarInfoOrm> carInfoOrms = ...
  • spring boot自带的page分页

    万次阅读 2019-02-27 12:32:18
    #jpa自带的page类()springboot自带 帮助我们分页 public Page&lt;Comment&gt; findByDetailid(Long id,Pageable pageable); 括号中第一个属性表示根据什么性质排列,第二个属性为保存你分页的配置 在...
  • iview的table+page分页

    千次阅读 2018-10-29 15:53:17
    Page :total="pageTotal" :current="pageNum" :page-size="pageSize" show-elevator show-total placement="top" @on-change="handlePage"&gt; &lt;/...
  • 1、通过pageable 实现将list 转 page 测试发现 直接 通过 new pageImpl 来转换page 行不通 Page<String> stringPage = new PageImpl<...根据结果可知 未实现分页功能。 则通过手动分割方式去实现 ...
  • Springboot中MyBatisplus使用IPage和Page分页

    万次阅读 多人点赞 2020-11-18 10:47:13
    一、需求:实现Springboot中MyBatisplus使用IPage和Page分页 二、技术:MyBatisplus的IPage和Page 三、实现 1、代码结构 2、代码详情 (1)Controller package com.xkcoding.rbac.security.controller; ...
  • ...我们在前面已经了解了关于limit方法用于分页查询的情况,而page方法则是更人性化的进行分页查询的方法,例如还是以文章列表分页为例来说,如果使用limit方法,我们要查询第一页和第二页(假设
  • List集合如何分页(List集合转Page分页)

    千次阅读 2021-09-29 16:25:14
    这段时间写了一个小需求,就是在原来Page分页需求上加一些筛选项,原来的代码就是用 mybatisplus的querrywrapper条件查询之后,再用page方法将条件语句转page,这样做很简单很方便,一气呵成,就像下面这样 ...
  • iview page分页组件的集成

    万次阅读 多人点赞 2017-12-23 11:40:17
    iview page分页组件的集成  今天给大家分享一下iview page分页组件与iview table表格的集成,主要是针对前端集成,整个前端采用vue渲染,首先我们查看一下iview page分页组件https://www.iviewui.com/components/page...
  • 今天查询分页显示,把每页设置为1000条,结果就查出来500条,page默认最多每页显示500条 解决方法: MybatisPlusConfig类中 paginationInterceptor.setLimit(-1);
  • 自定义分页Page实现

    千次阅读 2021-11-27 09:46:51
    自定义Page封装前言一、需求二、封装page实体类1.代码2.结合mybatis使用 前言 web项目开发过程中,有很多的数据遍历需要用到分页,尽管现在很多的框架和插件都可以直接使用封装好的分页,但是处于学习的目的,我们...
  • JPA - 使用Page进行分页

    千次阅读 2021-08-15 23:02:16
    这里介绍JPA中使用Page进行分页分页的封装,前端传递的参数类型如下形式: ?start=10&count=5 结果展示如下: 环境 SpringBoot 2.5.3 + JPA 2.5.3 具体实现 Product 控制器 import ...
  • springboot + mybatis plus + page分页

    千次阅读 2020-03-21 18:41:45
    pom.xml com.baomidou mybatis-plus-boot-starter 3.1.1 配置类: @Configuration public class MybatisPlusConfig { /** * 分页插件 */ @Bean public PaginationInterceptor paginationInterceptor() { return new ...
  • } service: /** * 分页 * @param page 分页信息 * @param categoryId 分类 * @param userId 用户 * @param level 置顶 * @param recommend 精选 * @param order 排序 * @return */ @Override public IPage<PostVo>...
  • 最近尝试使用Mybatis-plus的selectPage()分页查询功能,然后发现按照API文档使用后,并没有生效。代码如下: List<Line> lineList = lineMapper.selectPage(new Page<>(1,6),query).getRecords(); ...
  • Vue.js iView Page分页组件之假分页

    千次阅读 2018-03-26 19:23:30
    问题: 使用iView的Page组件实现分页效果,从现实角度来说,肯定是真分页才有现实的价值,但是假分页也很重要,是一个学习的过程。(ps:真分页就是每次前段请求,后端拿到请求去调用接口查询数据库。假分页就是前段...
  • MyBatisplus分页插件

    千次阅读 2022-05-04 15:29:35
    MyBatis Plus自带分页插件(即BaseMapper接口中的selectPage()方法),只要简单的配置即可实现分页功能,具体步骤如下: 1. 配置分页插件 新创一个配置类,在配置类里面配置分页插件 package ...
  • 使用MybatisPlus的分页selectPage无效

    千次阅读 2021-09-21 01:54:12
    使用mybatisplus的分页插件调用.selectPage方法无效,没有按size条数查询也没有返回total的问题。 需要添加如下配置 @EnableTransactionManagement @Configuration // @MapperScan("com.xxx.*.mapper") 如果有@...
  • 标题: ipage【mybatis-plus】转page【org.springframework.data.domain.Page】, ipage转page分页total总数量错误。 实现转换代码: public static <D> Page<D> getPage(IPage<D> page) { ...
  • 使用Page对象进行分页

    万次阅读 2019-06-05 13:12:44
    1.本分页功能主要使用到了三个主要对象:Page/PageParam/PageUtils,根据前端输入的参数:查询条件以及PageParam对象. ps:还用到了PageHelper 主要思路是根据查询条件将所需要的全部数据查到,然后根据PageParam中的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 259,941
精华内容 103,976
关键字:

page 分页