zoukankan      html  css  js  c++  java
  • mybatis分页查询需要注意的问题

    一般对mybatis的分页查询的关键代码就两行:

    #currentPage代表当前页,pageSize代表每页的行数
    PageHelper.startPage(currentPage, pageSize);
    
    #查询的语句
    mapper.select();

    一般代码在走到mapper.select()之后,会进入AbstractParser的实现类里面,加入你用的数据库是oracle数据库则会进入OracleParse类里面的

    getPageSql(String sql)这个方法里面,得到拼接会的分页sql语句是:
    select * from ( select tmp_page.*, rownum row_id from ( 
    
    sql
    
    
    ) tmp_page where rownum <= ? ) where row_id > ?

    其中这个sql变量就是你mapper.select()中对应的sql语句。

    但是这个sql分页有一个前提条件:每次mapper.select()查询的结果都是一样的。

    你有可能会问mapper.select()这个查询结果又不一样的情况吗?

    答案是有的,例如你查询一张表people,这张有一个字段是state ,这个state字段的值有1,2,3  ,你的sql

    语句是     select * from people where state in (1,2),每次执行过这条语句之后,这条语句的某些列的值的状态会变成0,那么下次你再执行这条sql语句时,总数将会发生变化。

    所以,用pagehelper进行分页会出错。

     

  • 相关阅读:
    一些信息熵的含义
    scikit-learn包的学习资料
    DB Scan算法的分析与实现
    ps教程连接
    用PS如何把图片调出时尚杂志色
    Linux FIFO读写时堵塞与非堵塞的效果
    yuyv转yuv420p代码及验证代码
    YUV格式介绍
    too many include files depth = 1024错误原因
    开发用小工具
  • 原文地址:https://www.cnblogs.com/1540340840qls/p/9968117.html
Copyright © 2011-2022 走看看