精华内容
下载资源
问答
  • 一、需求:实现Springboot中MyBatisplus使用IPage和Page分页 二、技术:MyBatisplus的IPage和Page 三、实现 1、代码结构 2、代码详情 (1)Controller package com.xkcoding.rbac.security.controller; ...

    一、需求:实现Springboot中MyBatisplus使用IPage和Page分页

    二、技术:MyBatisplus的IPage和Page

    三、实现

    1、代码结构

    2、代码详情

    (1)Controller

    package com.xkcoding.rbac.security.controller;
    
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.*;
    import java.util.Map;
    import com.baomidou.mybatisplus.core.metadata.IPage;
    import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
    import com.xkcoding.rbac.security.service.InterService;
    
    @Slf4j
    @RestController
    @RequestMapping("/inter")
    public class InterController {
    	@Autowired
    	private InterService interService;
    
    	@GetMapping("/test")
    	public IPage<Map> test() {
    		Integer currentPage = 1; //当前页数:显示第一页数据
    		Integer pageSize = 2;    //每页显示多少:每页显示2条数据
    		Page<Map> page = new Page<Map>(currentPage, pageSize);
    		IPage<Map> findList = interService.findlistpage(page);
    		return findList;
    	}
    }
    

    (2)Service

    package com.xkcoding.rbac.security.service;
    
    import java.util.Map;
    import org.springframework.stereotype.Service;
    import com.baomidou.mybatisplus.core.metadata.IPage;
    import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
    import com.xkcoding.rbac.security.dao.InterDao;
    import org.springframework.beans.factory.annotation.Autowired;
    import lombok.extern.slf4j.Slf4j;
    
    @Slf4j
    @Service
    public class InterService {
    	@Autowired
    	private InterDao interDao;
    
    	public IPage<Map> findlistpage(Page<Map> page) {
    		return interDao.selectMapsPage(page, null);
    	}
    }
    

    (3)Dao

    package com.xkcoding.rbac.security.dao;
    
    import java.util.List;
    import java.util.Map;
    import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
    import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    import com.baomidou.mybatisplus.core.metadata.IPage;
    import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
    import com.xkcoding.rbac.security.entity.Permission;
    
    public interface InterDao extends BaseMapper<Permission> {
    	IPage<Map> selectMapsPage(Page<Map> page, QueryWrapper<List<Map<String, Object>>> wrapper);
    }

    (4)XML

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http#{//mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.xkcoding.rbac.security.dao.InterDao">
    
    	<select id="selectMapsPage" resultType="java.util.Map" parameterType="java.util.Map">
    		SELECT * FROM INTER_COLLECTION
    	</select>
    	
    </mapper>

    (5)实体类

    package com.xkcoding.rbac.security.entity;
    
    import lombok.Data;
    
    @Data
    public class Inter {
        private String id;
    
        private String interName;
        
        private String mode;
    
        private String selectStatement;
    
        private String insertStatement;
        
        private String updateStatement;
    
        private String interEnable;
    
        private String interParam;
    
        private String interType;
        
        private String tableName;
    }
    

    3、运行结果

    以上用到的 lombok 注解:

    @Data:注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法
    @Slf4j:注解在类上;为类提供一个 属性名为log 的 log4j 日志对象

     

    展开全文
  • iview page分页组件的集成

    万次阅读 多人点赞 2017-12-23 11:40:17
    iview page分页组件的集成  今天给大家分享一下iview page分页组件与iview table表格的集成,主要是针对前端集成,整个前端采用vue渲染,首先我们查看一下iview page分页组件https://www.iviewui.com/components/page...
    iview page分页组件的集成

                今天给大家分享一下iview page分页组件与iview table表格的集成,主要是针对前端集成,整个前端采用vue渲染,首先我们查看一下iview page分页组件https://www.iviewui.com/components/page的介绍,分页组件的样式加起来不外乎就是以下style


    所以后台提供接口需要返回数据总条数total,需要接受前台传入pageNum和pageSize两个参数,我的项目是采用vue-cli生成的项目,关于vue-cli生成项目可以参考博客http://blog.csdn.net/u013144287/article/details/78659647

    第一步:html vue渲染集成所有样式,引入iview page组件,首先在main.js里面加入
    import iView from 'iview';
    import 'iview/dist/styles/iview.css';
    
    Vue.use(iView);

    第二步:引入组件
    <Page :total="pageTotal" :current="pageNum" :page-size="pageSize" show-elevator show-sizer show-total 
    placement="top" @on-change="handlePage" @on-page-size-change='handlePageSize'></Page>
    

    1、:total是Page属性,为总条数
    2、:current是Page属性,为当前页数
    3、:page-size是Page属性,为当前显示数据条数
    4、show-elevat对应html 图中跳至1页
    5、show-sizer对应html图中10条/页
    6、show-total对用html图中共58条

    api如下图所示:


    第三步:data里面初始化:
     pageTotal: 0,
     pageNum: 1,
     pageSize: 10,
    第四步:取到pageNum和pageSize
      handlePage(value) {
          this.pageNum = value
          this.getTeacherMessages()
        },
        handlePageSize(value) {
          this.pageSize = value
          this.getTeacherMessages()
        },
    第五步:table绑定值是data1,然后根据传入的pageNum,pageSize获取数据,给出的只是一种思想,都是利用vue v-bind或v-model来绑定值
    //获取教师信息列表
        getTeacherMessages() {
          var vm = this
          var url = '/v1/teachers?'
          //传入后台的pageNum和pageSize
         url = url + "pageNum=" + this.pageNum + '&pageSize=' + this.pageSize
          if (this.auditModelValue != '') {
            url = url + '&audit=' + this.auditModelValue
          }
          if (this.areaSelectValue != '') {
            url = url + '&areaClass=' + this.areaSelectValue
          }
          if (this.nameValue != '') {
            url = url + '&name=' + this.nameValue
          }
    
          this.$http.get(url).then(response => {
            if (response.data.code == '000000') {
              var storageteachers = response.data.data
              //绑定的iview table数据,是一个数组
             vm.data1 = storageteachers
               //绑定的总数据条数,后台接口返回
             vm.pageTotal = parseInt(response.data.message)
              for (var i = 0; i < vm.data1.length; i++) {
                vm.data1[i].sex = storageteachers[i].sex == 1 ? '男' : '女'
                if (typeof vm.data1[i].socialType != 'undefined' && vm.data1[i].socialType != null) {
                  vm.data1[i].socialType = storageteachers[i].socialType == 0 ? '在校大学生' : '专职教师'
                }
    
                //处理上课方式
                if (typeof vm.data1[i].classType != 'undefined' && vm.data1[i].classType != null) {
                  var classTypeArr = vm.data1[i].classType.split(',')
                  vm.data1[i].classType = ''
    
                  for (var j = 0; j < classTypeArr.length; j++) {
                    if (classTypeArr[j] == 0) {
                      vm.data1[i].classType += '学生上门,'
                    } else if (classTypeArr[j] == 1) {
                      vm.data1[i].classType += '老师上门,'
                    } else if (classTypeArr[j] == 2) {
                      vm.data1[i].classType += '远程教学,'
                    }
                  }
                  vm.data1[i].classType = vm.data1[i].classType.substr(0, vm.data1[i].classType.length - 1)
                }
    
    
                //处理家教经验
                if (typeof vm.data1[i].turorExperience != 'undefined' && vm.data1[i].turorExperience != null) {
                  switch (vm.data1[i].turorExperience) {
                    case 'one': vm.data1[i].turorExperience = '1年'
                      break
                    case 'two': vm.data1[i].turorExperience = '2年'
                      break
                    case 'three': vm.data1[i].turorExperience = '3年'
                      break
                    case 'four': vm.data1[i].turorExperience = '3年以上'
                      break
                  }
                }
    
    
                //处理教师星级
                if (typeof vm.data1[i].levelId != 'undefined' && vm.data1[i].levelId != null) {
                  switch (vm.data1[i].levelId) {
                    case '1': vm.data1[i].levelId = '实习'
                      break
                    case '2': vm.data1[i].levelId = '初级'
                      break
                    case '3': vm.data1[i].levelId = '中级'
                      break
                    case '4': vm.data1[i].levelId = '高级'
                      break
                    case '5': vm.data1[i].levelId = '特级'
                      break
                  }
                }
    
                //处理审核状态
                if (typeof vm.data1[i].audit != 'underfined' && vm.data1[i].audit != null) {
                  switch (vm.data1[i].audit) {
                    case "0":
                      vm.data1[i].audit = '未审核'
                      break
                    case "1":
                      vm.data1[i].audit = '审核通过'
                      break
                    case "2":
                      vm.data1[i].audit = '审核未通过'
                      break
                  }
                }
              }
            }
          }).catch(error => {
            console.log(error)
          })
        },
    下面还是给出iveiw table的写法吧:
    1、html
    <i-table highlight-row :columns="columns3" :data="data1" ref="table" :height="tableHeight"></i-table>
    
    2、data初始化
    columns3: [
            {
              type: 'selection',
              width: 60,
              align: 'center'
            },
            {
              width: 200,
              title: '❤姓名',
              sortable: true,
              key: 'name',
              render: (h, params) => {
                return h('div', [
                  h('Icon', {
                    props: {
                      type: 'person'
                    }
                  }),
                  h('strong', params.row.name)
                ]);
              }
            },
            {
              sortable: true,
              width: 200,
              title: '审核状态',
              key: 'audit'
            },
            {
              width: 200,
              title: '星级',
              key: 'levelId'
            },
            {
              width: 200,
              title: '❤手机号码',
              key: 'phone'
            },
            {
              width: 200,
              title: '❤性别',
              key: 'sex'
            },
            {
              width: 200,
              title: '❤籍贯',
              key: 'nativePlace'
            },
            {
              width: 200,
              title: '❤教员类型',
              key: 'socialType'
            },
            {
              width: 200,
              title: '❤生日',
              key: 'birth'
            },
            {
              width: 200,
              title: '❤就读学校',
              key: 'school'
            },
            {
              width: 200,
              title: '❤学历',
              key: 'education'
            },
            {
              width: 200,
              title: '❤专业',
              key: 'professional'
            },
            {
              width: 200,
              title: '❤所在区域',
              key: 'areaClass'
            },
            {
              width: 200,
              title: '❤可授年级',
              ellipsis: true,
              key: 'gradle'
            },
            {
              width: 200,
              title: '❤授课时间',
              key: 'classTime'
            },
            {
              ellipsis: true,
              width: 200,
              title: '❤可授科目',
              key: 'iwiteksSubjectIds'
            },
            {
              width: 200,
              title: '❤薪资要求',
              key: 'salary'
            },
            {
              width: 200,
              ellipsis: true,
              title: '❤授课方式',
              key: 'classType'
            },
            {
              width: 200,
              title: '执教学校',
              key: 'chargSchool'
            },
            {
              width: 200,
              title: '执教等级',
              key: 'professionalLevel'
            },
            {
              width: 200,
              ellipsis: true,
              title: '❤家教经验',
              key: 'turorExperience'
            },
            {
              width: 200,
              ellipsis: true,
              title: '相关证书',
              key: 'certificate'
            },
            {
              width: 200,
              ellipsis: true,
              title: '获奖情况',
              key: 'wining'
            },
            {
              width: 200,
              ellipsis: true,
              title: '个人描述',
              key: 'personalDesc'
            },
            {
              width: 200,
              sortable: true,
              title: '创建时间',
              key: 'createAt'
            },
            {
              title: '操作',
              key: 'action',
              fixed: 'right',
              width: 240,
              render: (h, params) => {
                return h('div', [
                  h('Button', {
                    props: {
                      type: 'primary',
                      size: 'small'
                    },
                    style: {
                      marginRight: '5px'
                    },
                    on: {
                      click: () => {
                        this.show(params.index)
                      }
                    }
                  }, '查看详情'),
                  h('Button', {
                    props: {
                      type: 'error',
                      size: 'small'
                    },
                    style: {
                      marginRight: '5px'
                    },
                    on: {
                      click: () => {
                        this.remove(params.index)
                      }
                    }
                  }, '去审核'),
                  h('Button', {
                    props: {
                      type: 'success',
                      size: 'small'
                    },
                    on: {
                      click: () => {
                        this.setLevelId(params.index)
                      }
                    }
                  }, '设置星级')
                ]);
              }
            }
    
          ],
          data1: [
          ],
    data1在第五步后台返回数据赋值,data1通过数据key值与column列的key值相等从而初始化表格。

    第六步:效果如下:


    展开全文
  • Page分页组件

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

    页面效果图:

    实现原理分析:

    1.在action中实例化page
    此时page会进struts值栈,在page分页组件中有一个属性是links用来存放分页条,在页面通过${links}的方式来获取这个分页条(此分页条是手动拼接出来的)



    page分页组件代码如下:
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;

    import cn.itcast.jx.common.SysConstant;

    /**
    * 分页辅助类:对分页的基本数据进行一个简单的封装
    * 用来传递分页参数和查询参数params
    *
    */

    public class Page<T> {
    private int pageNo = 1; //页码,默认是第一页
    private int pageSize = SysConstant.PAGE_SIZE; //每页显示的记录数,默认是2
    private int totalRecord; //总记录数
    private int totalPage; //总页数
    private List<T> results; //对应的当前页记录
    private Map<String, Object> params = new HashMap<String, Object>(); //其他的参数我们把它分装成一个Map对象
    public int getPageNo() {
    return pageNo;
    }
    public void setPageNo(int pageNo) {
    this.pageNo = pageNo;
    }
    public int getPageSize() {
    return pageSize;
    }
    public void setPageSize(int pageSize) {
    this.pageSize = pageSize;
    }
    public int getTotalRecord() {
    return totalRecord;
    }
    public void setTotalRecord(int totalRecord) {
    this.totalRecord = totalRecord;
    //在设置总页数的时候计算出对应的总页数,在下面的三目运算中加法拥有更高的优先级,所以最后可以不加括号。
    int totalPage = totalRecord%pageSize==0 ? totalRecord/pageSize : totalRecord/pageSize + 1;
    this.setTotalPage(totalPage);
    }
    public int getTotalPage() {
    return totalPage;
    }
    public void setTotalPage(int totalPage) {
    this.totalPage = totalPage;
    }
    public List<T> getResults() {
    return results;
    }
    public void setResults(List<T> results) {
    this.results = results;
    }
    public Map<String, Object> getParams() {
    return params;
    }
    public void setParams(Map<String, Object> params) {
    this.params = params;
    }
    public String toString() {
    StringBuilder builder = new StringBuilder();
    builder.append("Page [pageNo=").append(pageNo).append(", pageSize=").append(pageSize).append(", results=").append(results).append(", totalPage=").append(totalPage).append(", totalRecord=").append(totalRecord).append("]");
    return builder.toString();
    }
    /* 页面链接 */
    public String url; //分页按钮中的转向链接
    public void setUrl(String url) {
    this.url = url;
    }
    public String links;
    public String getLinks() {
    /**
    * 第1页 / 共1页 总共8条记录 每页10条记录 [首页] [上一页] [下一页] [末页]
    * @return
    */
    String str = "";
    //此处的name值应该写page.pageNo表示提交给页面的page对象的pageNo属性
    str +="<input type='hidden' id='pageNo' name='page.pageNo' value='1'>";
    str+="第"+pageNo+"页 / 共"+totalPage+"页 总共"+totalRecord+"条记录 每页"+pageSize+"条记录 ";
    // [首页] --->为页面中引号配对发生错误,可以用转义 \"
    str+="<a href='#' οnclick=\"turnPage(1,'"+url+"')\">[首页]</a>";
    //[上一页]
    int no = pageNo-1>1?pageNo-1:1;
    str+="<a href='#' οnclick=\"turnPage("+no+",'"+url+"')\">[上一页]</a>";
    //[下一页]
    no = pageNo+1<totalPage?pageNo+1:totalPage;
    str+="<a href='#' οnclick=\"turnPage("+no+",'"+url+"')\">[下一页]</a>";
    //[末页]
    str+="<a href='#' οnclick=\"turnPage("+totalPage+",'"+url+"')\">[末页]</a>";
    return str;

    }

    }

    2.在jsp页面中通过如下方式获取分页条和分页查询的数据




    展开全文
  • PageHelper.startPage分页无效

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

    在你需要进行分页的 MyBatis 查询方法前调用 PageHelper.startPage 静态方法即可,紧跟在这个方法后的第一个MyBatis 查询方法会被进行分页。

    在这里插入图片描述
    无论是在控制层还是服务层一定要注意它的位置。

    展开全文
  • spring data jpa中的page分页

    千次阅读 2019-07-10 16:52:15
    public Page<SceneryComment> findUid(Integer sceneryId,Integer uid,Integer page, Integer size){ Pageable pageable = PageRequest.of(page-1,size,new Sort(Sort.Direction.DESC, "createData")); return ...
  • Vue.js iView Page分页组件之真分页

    千次阅读 2018-03-29 09:59:39
    问题: 之前实现假分页,现在来实现简单的真分页,原理见 Mybatis Example对Oracle数据库的分页查询思路: 前端在初始化过程中,第一步先请求总的条数,然后,再请求第一页数据,然后根据点击翻页事件根据请求页码...
  • Vue.js iView Page分页组件之假分页

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

    千次阅读 2020-02-27 15:32:40
    之前一直没用过PageHelper.startPage分页,都是自己在项目配置的自定义分页,这次开发的项目里,大家用的是这个,用的时候碰到一个问题,现记录下。 项目要求做一块实时仓库信息大屏来动态显示数据。因为有些地方...
  • 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 ...
  • 在无任何报错的情况下 pagehelper.startpage分页无效问题 项目启动没有报错,数据显示正常,但是未能实现分页效果。 代码如下: 运行结果如下: 原因分析: 自从spring boot开始使用2.0x版本以上后,很多相应的...
  • spring boot自带的page分页

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

    千次阅读 2019-03-26 16:49:13
    一、代码使用 publicPage<Recipe> queryProgress(Pageable pageable){ //查询list List<Entity> list = service.findAll(); Page<Recipe> page = new PageImpl<...
  • new 出一个Page作为参数传给 Mapper 就是这么简单就可以实现自己的sql也可以分页
  • TP3.2.3使用page分页类对查询结果进行分页时的问题 最近在完成公司的任务的时候遇到了一个小问题,因为以前没遇到过,所以浪费了很多时间,下面把遇到的问题和解决方法和大家分享一下,避免大家踩坑。 HTML部分...
  • 1、通过pageable 实现将list 转 page 测试发现 直接 通过 new pageImpl 来转换page 行不通 Page<String> stringPage = new PageImpl<...根据结果可知 未实现分页功能。 则通过手动分割方式去实现 ...
  • ...我们在前面已经了解了关于limit方法用于分页查询的情况,而page方法则是更人性化的进行分页查询的方法,例如还是以文章列表分页为例来说,如果使用limit方法,我们要查询第一页和第二页(假设
  • 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...
  • feign page exceptionspring cloud feign page 分页异常,没有无参构造方法,反序列化失败方法一:定义自己的 Page 类,在服务端自己转化方法二:定义自己的 Page 类,在消费端接收即可 spring cloud feign page ...
  • 标题: ipage【mybatis-plus】转page【org.springframework.data.domain.Page】, ipage转page分页total总数量错误。 实现转换代码: public static <D> Page<D> getPage(IPage<D> page) { ...
  • MyBatisPlus进阶实战 ...我们这里不过多介绍,感兴趣的小伙伴可以上官网查看。...外连接的自定义SQL语句,使用MyBatisPlus的条件构造器以及使用Page分页插件,使用ResultMap映射到其他实体类上。 MybatisPlus的Res
  • java分页Page

    万次阅读 2018-08-31 11:25:48
    public class Page implements Serializable { private int currentPageNum;//当前页 private int pageSize=5;//每页显示的条数 private int totalRecords;//总记录条数 private int startIndex;//查询的开始记录...
  • 使用Page对象进行分页

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

    千次阅读 2017-08-23 20:07:47
    分页查询是一个非常重要的知识点; 这里的代码不能直接拷贝运行,这里讲的只是个思路;public PageModel<UserList > selectCheckList (UserList userList) throws Exception{ PageHelper.startPage(searchVo....
  • 在iview里,分页组件的电梯功能输入页码后需要按回车才能跳转这让不知道需要按回车的人摸不着头脑呀,所以呢,动动手写个跳转按钮~效果如图: //点击跳转到输入的页码 goElevatorPage(){ var evtObj; var this...
  • 将List用Page进行分页

    千次阅读 2019-10-22 10:23:24
    @Data public class RequestPage { private int page; private int size; /** * 初始化分页参数 */ public RequestPage(Integer page, Integer size) { this.page = page == null...
  • MyBatis-Plus分页查询——Page

    千次阅读 热门讨论 2021-01-24 09:54:30
    @Repository @Mapper public interface UserMapper extends BaseMapper<User> { } 核心操作 准备工作做好之后,下面来对分页进行一波处理,使用分页的时候,这里强调一下,需要先写一个配置类,可以理解为是一个...
  • 使用PageInfo做分页时手动设置参数的实现方式 转载请标明出处: 原文首发于:http://www.zhangruibin.com 本文出自RebornChang的博客 在做项目开发的时候,pagehelper是我们经常使用的一个分页插件,源码地址:...
  • MyBatis分页填充page对象

    千次阅读 2018-10-17 18:05:48
    这里以一个项目中查询文章的操作来做说明: 1、涉及的相关JavaBean Article.java ...网上类似分页插件,拦截器实现的分页方式暂时未尝试,采用这种传统的分页方法,使用中最大的失误就是page中...
  • 引起无法分页的情况有很多,...PageHelper.PageHelper.startPage()要和查询语句紧挨在一起,否则分页失败,如下: 如果将PageHelper.PageHelper.startPage()放置在首行红框处,分页就无法成功。 想知道一下原理。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 215,382
精华内容 86,152
关键字:

page分页