精华内容
下载资源
问答
  • 一、需求:实现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 日志对象

     

    展开全文
  • public IPage<User> findUserByPageAndId(Integer currentPageNum, Integer pageSize, Long userId) { Page<UserInfo> page = new Page<>(currentPageNum, pageSize);...IPage以规格其他内容为
    public IPage<User> findUserByPageAndId(Integer currentPageNum, Integer pageSize, int userId) {
        Page<User> page = new Page<>(currentPageNum, pageSize);
        return mapper.findUserBySQL(page, userId);
    }
    

    Page用于定义每页的规格
    IPage以规格和其他内容为参数,将记录进行分页

    展开全文
  • 标题: ipage【mybatis-plus】转page【org.springframework.data.domain.Page】, ipagepage分页total总数量错误。 实现转换代码: public static <D> Page<D> getPage(IPage<D> page) { ...

    标题: ipage【mybatis-plus】转page【org.springframework.data.domain.Page】, ipage转page分页total总数量错误。

    实现转换代码:
    
    public static <D> Page<D> getPage(IPage<D> page) {
            Pageable pageable = PageRequest.of((int)page.getCurrent()-1, (int)page.getSize());
            return new PageImpl<D>(page.getRecords(), pageable, page.getTotal());
        }
    

    问题有时候会爆出total总数量变化:源码展示

      /**
    	 * Constructor of {@code PageImpl}.
    	 *
    	 * @param content the content of this page, must not be {@literal null}.
    	 * @param pageable the paging information, must not be {@literal null}.
    	 * @param total the total amount of items available. The total might be adapted considering the length of the content
    	 *          given, if it is going to be the content of the last page. This is in place to mitigate inconsistencies.
    	 */
    	public PageImpl(List<T> content, Pageable pageable, long total) {
    		super(content, pageable);
    		this.total = pageable.toOptional().filter(it -> !content.isEmpty())//
    				.filter(it -> it.getOffset() + it.getPageSize() > total)//
    				.map(it -> it.getOffset() + content.size())//
    				.orElse(total);
    	}
    

    错误原因
    it -> it.getOffset() + it.getPageSize() > total)
    .map(it -> it.getOffset() + content.size())

    	假如你的offset+pagesize > total就出问题了,也就是page传递的参数是1开始
    	还是0开始的问题,所以注意⚠️:page 一定要和查询的page-1 那个指相同。
    
    展开全文
  • Ipage分页PageHelper分页

    千次阅读 2021-03-02 13:55:51
    IPage则需要在dao层传入IPage的实现类Page对象,该对象实现了IPage区别: PageHelper内部原理是将传入的页码条数赋值给了Page对象,保存到了一个本地线程ThreadLoacl中,然后会进入Mybatis的拦截器中。 然后再...

    分页插件

    两个都用于分页,常用的应该是PageHelper了,

    使用方法是 PageHelper.startPage()然后后边写sql就可以。 紧接着的一个sql起作用。
    IPage则需要在dao层传入IPage的实现类Page对象,该对象实现了IPage。
    区别:
    PageHelper内部原理是将传入的页码和条数赋值给了Page对象,保存到了一个本地线程ThreadLoacl中,然后会进入Mybatis的拦截器中。
    然后再拦截器中获取本地线程中保存的分页的参数。最后再将这写分页参数和原本的sql以及内部定义好的sql进行拼接完成sql的分页处理。
    中间会进行判断该sql 的类型是查询还是修改操作。如果是查询才会进入分页的逻辑并判断封装好的Page对象是否是null,null则不分页,否则分页。

    IPage内部原理也是基于拦截器,但是这个拦截的是方法以及方法中的参数,这个也会判断是否是查询操作。如果是查询操作,才会进入分页的处理逻辑。
    进入分页逻辑处理后,拦截器会通过反射获取该方法的参数进行判断是否存在IPage对象的实现类。如果不存在则不进行分页,存在则将该参数赋值给IPage对象。
    然后进行拼接sql的处理完成分页操作。
    但是使用IPage需要注入一个bean拦截器交给spring进行管理。如下。否则不会进行拦截。

      @Bean
      public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
      }
      pom:  springboot使用的是2.1.0
        <dependency>
          <groupId>com.baomidou</groupId>
          <artifactId>mybatis-plus-boot-starter</artifactId>
          <version>${mybatisplus.version}</version><!-- 3.2.0 -->
          <exclusions>
            <exclusion>
              <groupId>com.baomidou</groupId>
              <artifactId>mybatis-plus-generator</artifactId>
            </exclusion>
          </exclusions>
        </dependency>
    

    IPage的好处:
    适用于多方言的数据库类型;例如 MySQL、Oracle、SqlServer等。

    注意:如果两个一起用对同一个sql进行分页,内部会先执行IPage的拦截器并进行分页 然后会进入的PageHelper的分页处理。
    优先使用的是IPage并且PageHelper会出现问题(不论谁前谁后)。返回Page是没问题的,但是如果返回集合的结果集使用PageInfo进行分页就会出现问题。PageHelper只会有指定条数的数据。
    所以只能使用一个,如果两个一起使用,则使用IPage返回Page接收。不可以使用PageInfo进行分页数据。(当然这个的前提也是对同一个sql进行分页操作并返回的集合结果集,正常来说也不会这么干,就随便提一嘴)

    展开全文
  • I am trying to create a data-source in my web-logic domain to remotely connect to ipage mysql database, but I don't know which driver to use, where is the host name and the port?? I have the database ...
  • 1、public List getAllInfo(QyjbxxVo qyjbxxVo) { ... IPage pageInfo = iQyjbxxService.getPageInfo(page, qyjbxxVo); //转换为Dto List qyjbxxPos = new ArrayList<>(); if (CollectionUtil.isEmpty(pageIn.
  • IPage 中取值赋值

    2021-10-15 15:29:29
    IPage // 是baomidou.mybatisplus 中带的分页 //pom 依赖如下: <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-extension</artifactId> <version>...
  • IPage分页mybatis的pagehelper分页区别 两个都用于分页,常用的应该是PageHelper了,理解了一下源码后发现IPage比PageHelper好用。 使用方法是 PageHelper.startPage()然后后边写sql就可以。 紧接着的一个sql起作用...
  • list = iaShopManagementRightMapper.getManagementRightList(page,query); //使用数组List<对象>.getRecords接收IPage数据 List<IaManagementRightListVo> lis = list.getRecords(); //便利数据,获取...
  • 两个都用于分页,常用的应该是PageHelper了,理解了一下源码后发现IPage比PageHelper好用。... PageHelper内部原理是将传入的页码条数赋值给了Page对象,保存到了一个本地线程ThreadLoacl中,然后会进入Mybatis的拦.
  • mybatisplus使用ipage分页

    千次阅读 2020-05-26 18:46:04
    1.方法中 Page<xxxVO> page=new Page<... iPage = xxxMapper.getList(page,xxx,xxx); 2.mapper IPage<xxxVO> getCityDataList(Page<xxxVO> page, @Param("xxx") String xxx,@Param("xx.
  • 在Dao层写分页查询时的代码如下所示: /** 分页多条件查询 */ ... getPageSearch(Page page,Map map); 然后就是在xml中写SQL语句了: <select id="getPageSearch" parameterType="map" resultType.
  • mybatis plus IPage实体>转 IPage<Vo>

    千次阅读 2020-08-31 14:02:13
    一、mybatis plus IPage<实体>转 IPage 问题描述:使用mybatis plus时 通过crud接口获取iPage<实体> 但返回需要用iPage封装 1.代码 代码如下(示例): /** * 根据用户姓名分页查询用户 * * @param ...
  • 主要原因是 jsqlparser 解析sql时出错,抛出异常 mybatis-plus捕获 记录了failed to concat orderBy from IPage, exception=null logger.warn("failed to concat orderBy from IPage, exception=" + e.getMessage());...
  • = null"> AND age=#{age} </if> 第二种情况 dao层声明参数返回值类型 IPage selectAll(IPage page,@Param("params") HashMap params); <select id="selectAll" resultType="java.util.HashMap"> 一般我们在xxx.xml...
  • 一、如图,报错解决办法
  • MybatisPlus 提供了分页查询的方法,返回 IPage< T > 类型,但是有时候我们需要再将拿到 的 IPage< T > 类型再转一下,返回 IPage< B >, 比如得到 IPage< User > ,但是User 实体的部分...
  • myBatisPlus的IPage分页

    万次阅读 2019-11-26 11:32:27
    IPage<KeyWordVo> sqlectKeyWordAndCom(IPage<KeyWordVo> page,@Param("comName") String comName,@Param("descType")String descType,@Param("keyType") String keyType, @Param("status")String status);...
  • IPage<Item> getSaleprice(IPage<Item> page, @Param("ew") Wrapper<Item> queryWrapper, @Param("customerId") Integer cutomerId); 异常报错 IPage<Item> getSaleprice(@Param(...
  • mybatis-plus IPage分页踩坑

    万次阅读 多人点赞 2019-07-29 20:45:21
    TooManyResultsException问题解决mybatis-plus 中page参数不在第一个位置,返回的结果集接收对象不被认为是一个集合,而放在第一位就没有问题。所以正确的写法是 莫名的异常 1.Mapper IPage<Entity> ...
  • MybatisPlus的IPage失效问题

    千次阅读 2020-03-09 10:46:32
    MybatisPlus的IPage失效问题 先看问题 @RequestMapping(value = "/getUsers", method = RequestMethod.GET) public IPage<User> getUsers(@RequestParam(value = "pageIndex", defaultValue = "1")int ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,610
精华内容 2,644
关键字:

ipage和page的区别