精华内容
下载资源
问答
  • 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进行分页操作并返回的集合结果集,正常来说也不会这么干,就随便提一嘴)

    展开全文
  • MyBatis-plus的IPage分页

    2021-08-28 14:25:11
    单表的查询并根据时间分页 1、yml或者properties中配数据源,配自己的数据库就好。 mybatis-plus: mapper-locations: ../mapper/*.xml configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl...

    单表的查询并根据时间分页

    1、yml或者properties中配数据源,配自己的数据库就好。

    mybatis-plus:
      mapper-locations: ../mapper/*.xml
      configuration:
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl  //这个是为了在控制台打印SQL语句。
    

    2、导入Mybatis-Plus的依赖,我这里使用的是3.4.0的版本,这里一定要注意依赖的版本号,3.4.0以后,分页插件的配置进行了更新。这里强调一下,如果自带分页插件失效,先检查版本和配置。

            <!--MyBatis-plus配置-->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.4.0</version>
            </dependency>

    3、新建一个config,这个config写Mybatis-Plus的插件配置,MP的插件配置有很多,这里单说一下分页的配置。

    /**
     *    注意@MapperScan,使用springboot的话,启动类是要扫描数据层的,如果仅用的是MP对数据    
     *    库操作,启动类里面的@MapperScan是不用写的,只写这里就好。
     *
     */
    
    @Configuration
    @MapperScan("com.tiktang.dao")
    public class MybatisPlusConfig {
        /**
         * IPage的分页使用的是拦截器,属于物理分页,好处就是处理大量数据时,查询速度快。
         *    有兴趣的同学可以看看什么是物理分页和逻辑分页。
         * @return
         */
        @Bean
        public MybatisPlusInterceptor mybatisPlusInterceptor() {
            MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
            //向Mybatis过滤器链中添加分页拦截器
            interceptor.addInnerInterceptor(new            
                         PaginationInnerInterceptor(DbType.MYSQL));
            return interceptor;
        }
    
        @Bean
        public ConfigurationCustomizer configurationCustomizer() {
            return configuration -> configuration.setUseDeprecatedExecutor(false);
        }
    }

    4、单表的实体类entity对象,自己数据库中的字段,此步进行了省略。

    5、程序的步骤,我一般习惯先写Mapper.xml,Mapper,service,serviceImpl,controller。按这个步骤来说,首先要先写的是Mapper.xml,但是是单表操作,又是用MP框架,就不用再写Mapper.xml了。

    6、Mapper

    //News为实体类
    @Repository
    public interface NewsMapper extends BaseMapper<News> {
    
    }

    7、service

    //News为实体,page为当前页,pageSize是一页多少个
    public interface NewsService {
    
        IPage<News> queryNewsList(Integer page, Integer pageSize);
    }

    8、serviceImpl

    @Service
    public class NewsServiceImpl implements NewsService {
        
        @Autowired
        private NewsMapper newsMapper;
    
        @Override
        public IPage<News> queryNewsList(Integer page, Integer pageSize) {
    //      Page<News> page1 = new Page<>(page,pageSize);
            //这里进行了时间排序
            QueryWrapper<News> queryWrapper = new QueryWrapper<>();
            queryWrapper.orderByDesc("news_time");
            //MP自带的selectPage方法,有兴趣的同学,可以看一下源码
            IPage<News> iPage = newsMapper.selectPage(new Page<>(page, pageSize), 
            queryWrapper);
            return iPage;
        }
    
    }

    9、controller

        @GetMapping("/newsList")
        public Result<News> queryNewsList(@RequestParam Integer page,
                                        @RequestParam Integer pageSize){
            IPage<News> iPage = newsService.queryNewsList(page, pageSize);
            return Result.ok().data("iPage",iPage);
        }

    Result是我自己封装的结果集,有时间会再写一下关于返回统一结果集的内容。

    到此单表查询分页并根据时间排序就完成。

    2⃣️:

        @GetMapping("/getCompanyInvest")
        public Result getCompanyInvest(@RequestParam String companyId,
                                       @RequestParam Integer currentPage,
                                       @RequestParam Integer pageNumber){
            QueryWrapper<CompanyInvest> queryWrapper = new QueryWrapper<>();
            queryWrapper.eq("company_id",companyId);
            Page<CompanyInvest> page = new Page<>(currentPage,pageNumber);
            IPage<CompanyInvest> companyInvestIPage = companyInvestMapper.selectPage(page,queryWrapper);
            Map<String,Object> map = new HashMap<>();
            map.put("公司投资信息的子页面",companyInvestIPage);
            return Result.ok().data(map);
        }

    展开全文
  • IPage分页不生效的问题

    千次阅读 2020-10-23 11:28:13
    需要写一个类来配置才生效。

    在这里插入图片描述
    需要写一个类来配置才生效。

    展开全文
  • 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);...

    KeyWord.xml

     <sql id="Key_Com_Column">
           SELECT
            BD_KEY_WORD.KEY_ID as keyId,
            KEY_WORD as keyWord,
            DESC_TYPE as descType,
            KEY_TYPE as keyType,
            BD_KEY_WORD.CREATE_TIME as createTime,
            APPLY_TIME as applyTime,
            BD_KEY_WORD.STATUS as status,
            KEY_CAUSE as keyCause,
            SF_COMPANY_INFO.COMPANY_NAME as comName
            FROM
            BD_KEY_WORD
            LEFT JOIN
            BD_KEY_COM
            ON BD_KEY_WORD.KEY_ID = BD_KEY_COM.KEY_ID
            LEFT JOIN
            SF_COMPANY_INFO
            ON BD_KEY_COM.COM_ID = SF_COMPANY_INFO.COM_ID
        </sql>
        
        
        <select id="sqlectKeyWordAndCom" resultType="com.geostar.bigdata.dto.KeyWordVo">
            <include refid="Key_Com_Column"/>
            WHERE 1 = 1
            <if test="comName != null and comName != ''">
                and SF_COMPANY_INFO.COMPANY_NAME like concat(concat('%', #{comName}), '%')
            </if>
            <if test="descType != null and descType != ''">
                and DESC_TYPE = #{descType}
            </if>
            <if test="keyType != null and keyType != ''">
                and KEY_TYPE = #{keyType}
            </if>
            <if test="status != null and status != ''">
                and BD_KEY_WORD.STATUS = #{status}
            </if>
        </select>
    
    

    KeyWordMapper

        IPage<KeyWordVo> sqlectKeyWordAndCom(IPage<KeyWordVo> page,@Param("comName") String comName,@Param("descType")String descType,@Param("keyType") String keyType, @Param("status")String status);
    
    
    展开全文
  • 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.
  • Mybatis-plus IPage分页常见问题(坑)

    万次阅读 2020-06-02 18:14:54
    Mybatis-plus IPage分页常见问题(坑)1.TooManyResultsException 观前提示: 本文所使用的IDEA版本为ultimate 2019.1,JDK版本为1.8.0_141。 1.TooManyResultsException 最近在使用Mybatis-plus的IPage插件分页时,...
  • //使用IPage 接收对象数组,并将查询出来的数据进行分页展示 IPage<IaManagementRightListVo> list = iaShopManagementRightMapper.getManagementRightList(page,query); //使用数组List<对象>.get...
  • import org.spring... @Configuration public class MyabtisPlusConfig { /** * 分页插件 * @return */ @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); } }
  • MyBatis-Plus的IPage分页total不正确问题

    千次阅读 2021-02-25 14:15:37
    场景: 执行了一条连接查询的sql语句,进行分页后,total不正确问题。如下图: 分析: 分页部分代码如下: String sql = searchSqlBuilderInstance.generateSql(); Page page = new Page...IPage<Map<Str
  • mybatis-Plus自定义IPage分页查询传参

    千次阅读 2020-04-23 16:31:07
    TableMapper IPage<TableVo> getTablePage(Page<TableVo> page, @Param(Constants.WRAPPER) QueryWrapper<Table> queryWrapper, @Param("createrUnitId") String createrUnitId); Table.xml ...
  • mybatis的conllection+orcale+多表关联+Ipage分页查询结果问题的解决--column一.问题描述二.解决方法:使用conllection的column进行多表关联功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与...
  • = null"> AND age=#{age} </if> 第二种情况 dao层声明参数和返回值类型 IPage selectAll(IPage page,@Param("params") HashMap params); <select id="selectAll" resultType="java.util.HashMap"> 一般我们在xxx.xml...
  • 原因定位,mybatis支持的数据库类型不包括derby,所以在derby数据库会统一识别为OTHER方言UnknownDialect,在使用Ipage分页的时候,看源码UnknownDialet会抛出MabatisPlusException异常。 解决方法: ...
  • 在Dao层写分页查询时的代码如下所示: ... IPage<Entity> getPageSearch(Page page,Map map); 然后就是在xml中写SQL语句了: <select id="getPageSearch" parameterType="map" resultType.
  • 由于需求需要,原本ipage 插件第一页是从 1开始,现在需要将第一页改为从0开始。 如current=0 返回第一页数据 current=1 返回第二页数据 current=2 返回第三页数据 以此类推。 思路分析: 插件改变了 SQL 语句,找到...
  • mybatis-plus IPage分页踩坑

    万次阅读 多人点赞 2019-07-29 20:45:21
    mybatis-plus IPage 分页多参数查询莫名的异常1.Mapper2.Mapper.xml3. TooManyResultsException问题解决mybatis-plus 中page参数不在第一个位置,返回的结果集接收对象不被认为是一个集合,而放在第一位就没有问题。...
  • 使用MyBatisPlus的IPage进行分页查询

    千次阅读 2021-08-17 11:34:54
    ,定义分页查询方法,其返回值类型是 IPage<实体类> .     2.服务的实现类要继承 ServiceImpl< Mapper接口类,实体类 > ,重写分页查询方法.     3.定义查询条件wrapper ,如图所示:    ...
  • 本文应用于ssm框架,解决controller接口返回mybatis-plus封装的IPage类型与Vue.element-ui前端的接收与分页 mybatis-plus中的IPage与Page类 首先上源码(部分) 接口Ipage类型: IPage的实现类Page: 源码可见Page是...
  • Mybatisplus Ipage分页 导入 导出

    千次阅读 2020-07-12 22:18:15
    链接:Mybatisplus Ipage分页 导入 导出 提取码:eu43 复制这段内容后打开百度网盘手机App,操作更方便哦 注意:下面必须加不然可能乱码!!!!!!! <properties> <java.version>1.8</java....
  • 一、需求:实现Springboot中MyBatisplus使用IPage和Page分页 二、技术:MyBatisplus的IPage和Page 三、实现 1、代码结构 2、代码详情 (1)Controller package com.xkcoding.rbac.security.controller; ...
  • Mybatis-Plus 提供了分页的功能。 项目依赖 JDK 1.8 SpringBoot 2.5.1 MybatisPlus 3.4.3.1 分页实现 maven依赖 <!-- SpringBoot MybatisPlus --> <dependency> <groupId>com.baomidou</...
  • 进入分页逻辑处理后,拦截器会通过反射获取该方法的参数进行判断是否存在IPage对象的实现类。如果不存在则不进行分页,存在则将该参数赋值给IPage对象。然后进行拼接sql的处理完成分页操作。 但是使用IPage需要...
  • 针对这个bug,官方已经提供解决方案,我本地是3.1.0,更改到3.1.1就可以了
  • IPage分页查询—配置类 package com.jt.config; import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; import com.jt.vo.EasyUITable; import org.springframework.context.annotation.Bean;...
  • 分页Page实现IPage,入参的IPage会在执行分页后填充数据 先看MP官方给出解释 如果在where条件中加入join的表,那么查询结果中的total很可能不准 因为Page中默认optimizeCountSql(优化count查询)=true 在count...
  • MybatisPlus配置文件(放置与启动器一层级别) @EnableTransactionManagement @Configuration ...public class MybatisPlus... * 分页插件 * @return */ @Bean public PaginationInterceptor paginationInterceptor

空空如也

空空如也

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

ipage分页