前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >mybatis oracle分页查询sql语句(oracle查询分页)

mybatis oracle分页查询sql语句(oracle查询分页)

作者头像
全栈程序员站长
发布于 2022-07-30 01:58:57
发布于 2022-07-30 01:58:57
1.6K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

java实现mysql分页查询

1.前言

1.mysql中分页用limit,但是limit后面不能跟表达式 ,错误表达式:limit (1-1)*10,10。 2.对象中提供分页数据的方法。 备注:limit a,b 表示从第a+1条开始取,本次一共取b条 如limit 0,10:取第1-10条数据,如 limit 25,8:去第26-33条数据。

application.properties数据库Mysql配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/xxxxxx?serverTimezone=UTC
spring.datasource.username= xxxx
spring.datasource.password= xxxx
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

#mybatis的mapper书写路径
mybatis.mapper-locations=classpath:mapper/*/*.xml 

pom依赖

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
		<dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.2</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

2.java分页对象类

分页对象: 主要看pageNo 、pageSize 、startNum,这里给页码和条数附初始值。有@Data在可以自动实现set和get

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import lombok.Data;
import java.util.Date;

@Data
public class BaseModel { 
   
    /** * 上游系统唯一系统标识号 12位系统号 **/
    private String upSystemId;
    /** * 上游系统唯一流水号 21位 **/
    private String upSystemSeqNo;
    /** * 上游系统 请求日期 2020-10-20 **/
    private Date tranDate;
    /** * 上游系统 操作人 12位 **/
    private String userId;
    /** * 主键ID **/
    private String id;
    /** * 创建时间 **/
    private Date createTime;
    /** * 更新时间 **/
    private Date updateTime;

    /** * 当前页,需要查询的页数 * pageNo从1开始 */
    private int pageNo = 0;

    /** * 每页显示的条数 */
    private int pageSize = 10;

    /** * 当前页,需要查询的页数 * pageNo从1开始 */
    private int startNum;

    /** * 设置分页查询数据 */
    public void setPageQuery() { 
   
        this.startNum = this.getPageNo() > 0 ? (this.getPageNo() - 1) * this.getPageSize() : 0;
    }

在调用sql前,设置分页数据:model.setPageQuery(); 备注:该对象继承了BaseModel ,所以子类可以直接调用父类的方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
	@BaseBeforeAnnotation
    @RequestMapping("selectReaderCardList")
    public BaseResponse selectReaderCardList(@RequestBody ReaderCardInfoModel model) { 
   
        model.setPageQuery();
        List<ReaderCardInfoModel> bookInfoModel = readerCardInfoService.selectReaderCardList(model);
        return new BaseResponse(ResultEnum.SUCCESS,bookInfoModel);
    }

3. Mybatis–Mapping.xml

mapping.xml中的分页查询sql: 主要看这段,pageNo>0表示是分页查询,不是全量查询。 startNum表示从第startNum+1条数据开始取数据,startNum在setPageQuery()方法中赋值了。 pageSize表示取多少条数据。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<if test="pageNo > 0">
      limit #{ 
   startNum}, #{ 
   pageSize}
</if>
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    <select id="selectReaderCardList" parameterType="com.example.demo.executer.readerCardInfo.model.ReaderCardInfoModel"
            resultMap="BaseResultMap">
        select id,
               reader_id,
               usable_flag,
               card_amt,
               bind_date,
               remark,
               create_time,
               update_time
        from t_reader_card
        <where>
            <if test="usableFlag != null">
                and usable_flag = #{ 
   usableFlag}
            </if>
            <if test="bindDate != null">
                and bind_date = #{ 
   bindDate}
            </if>
            <if test="readerId != null">
                and reader_id = #{ 
   readerId}
            </if>
        </where>
        order by create_time desc
        <if test="pageNo > 0">
            limit #{ 
   startNum}, #{ 
   pageSize}
        </if>
    </select>

4.请求与执行结果

postman请求参数 查询第3页的4条数据,limit 8,4

管理台日志打印 后台在接收到请求时,生成ReaderCardInfoController对象时,会自动生成

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 : ----------------------------------------------------------------------------------------------------start
 : ------BaseBeforeAspect---获取到请求参数------
 : ---入口方法:com.example.demo.executer.readerCardInfo.controller.ReaderCardInfoController
 : ---请求方法:selectReaderCardList
 : ---请求参数:{ 
   "pageNo":3,"pageSize":4,"startNum":0,"usableFlag":"0"}
 : ==>  Preparing: select id, reader_id, usable_flag, card_amt, bind_date, remark, create_time, update_time from t_reader_card WHERE usable_flag = ? order by create_time desc limit ?, ?
 : ==> Parameters: 0(String), 8(Integer), 4(Integer)
 : <==      Total: 4
 : ---commonAfter返回参数:
 { 
   "code":"000000","data":[
 { 
   "createTime":1603295662000,"id":"202010211554221000048","pageNo":0,"pageSize":10,"remark":"新建卡","startNum":0,"updateTime":1603295662000},
 { 
   "createTime":1603295662000,"id":"202010211554221000049","pageNo":0,"pageSize":10,"remark":"新建卡","startNum":0,"updateTime":1603295662000},
 { 
   "createTime":1603295661000,"id":"202010211554211000045","pageNo":0,"pageSize":10,"remark":"新建卡","startNum":0,"updateTime":1603295661000},
 { 
   "createTime":1603295661000,"id":"202010211554211000046","pageNo":0,"pageSize":10,"remark":"新建卡","startNum":0,"updateTime":1603295661000}
 ],"msg":"交易成功"}
 : ----------------------------------------------------------------------------------------------------end"}
: ----------------------------------------------------------------------------------------------------end

扩展

有个想法,不想再方法中调用model.setPageQuery(),想自动完成这个步骤。 分页对象写成以下两种,并在调用处去掉model.setPageQuery();

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    /** * 当前页,需要查询的页数 * pageNo从1开始 */
    private int startNum = this.getPageNo() > 0 ? (this.getPageNo() - 1) * this.getPageSize() : 0;
// private int startNum = 0;
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    /** * 设置分页查询数据 */
    public void setPageQuery() { 
   
        this.startNum = this.getPageNo() > 0 ? (this.getPageNo() - 1) * this.getPageSize() : 0;
    }

    public BaseModel(){ 
   
        setPageQuery();
    }
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
	@BaseBeforeAnnotation
    @RequestMapping("selectReaderCardList")
    public BaseResponse selectReaderCardList(@RequestBody ReaderCardInfoModel model) { 
   
       // model.setPageQuery();
        List<ReaderCardInfoModel> bookInfoModel = readerCardInfoService.selectReaderCardList(model);
        return new BaseResponse(ResultEnum.SUCCESS,bookInfoModel);
    }

结果是:不得行。嘿嘿,暂时未想到好的方法。

此分页方法是自己结合公司项目写的,有不足的地方欢迎大家指正。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/129338.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
_Mybatis分页查询——四种传参方式
分页查询时,Sql语句使用limit关键字,需要传入开始索引和每页条数两个参数。MyBatis的多参数处理有以下方式:
会洗碗的CV工程师
2023/11/21
5790
_Mybatis分页查询——四种传参方式
完美的 jpa 多表 原生sql 分页查询[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/129755.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/30
1.2K0
java分页代码_基本分页存储管理java代码
参考:https://www.open-open.com/lib/view/open1346772322162.html
全栈程序员站长
2022/11/14
1.5K0
java分页代码_基本分页存储管理java代码
【MyBatis-plus】- 使用多表关联查询并分页
1、第一步,创建一个对象VO类,用于展示页面 /** * @Author: Liu Yue * @Descripition: * @Date; Create in 2021/4/22 14:16 **/ @Data public class HkTaskMasterVO extends HkTaskMaster { /** * 附表list */ private List<HkTaskAddendumVO> hkTaskAddendumList; pr
用户5640963
2022/03/24
2K0
MyBatis Plus 实现多表分页查询
在Mybatis Plus 中,虽然IService 接口帮我们定义了很多常用的方法,但这些都是 T 对象有用,如果涉及到 多表的查询,还是需要自定义Vo 对象和自己编写sql 语句,Mybatis Plus提供了一个Page 对象,查询是需要设置其中的 size 字段 和 current 字段的值
全栈程序员站长
2022/08/14
4.8K0
MyBatis Plus 实现多表分页查询
java中分页查询的实现_java中分页实现步骤图解
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/10
1.2K0
MyBatis-Plus 分页查询以及自定义sql分页
物理分页:相当于执行了limit分页语句,返回部分数据。物理分页只返回部分数据占用内存小,能够获取数据库最新的状态,实施性比较强,一般适用于数据量比较大,数据更新比较频繁的场景。
全栈程序员站长
2022/09/13
7.5K0
mybatis-plus 自定义SQL、一对多、分页查询过滤多租户
这几天在使用的mybatis-plus的时候,在遇见复杂业务的时候遇见的一些租户过滤问题,面对多表关联查询的时候、自定义sql的时候,或者说一对多的时候,其中一个查询等功能过滤过滤租户的解决方案。
kinbug [进阶者]
2021/07/28
5.1K0
Spring+Mybatis+SpringMVC后台与前台分页展示实例(附工程)
      林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka
bear_fish
2018/09/20
1.1K0
Spring+Mybatis+SpringMVC后台与前台分页展示实例(附工程)
Java小白学习MyBatis:Mybatis 是如何进行分页的?
MyBatis 是一种持久层框架,支持通过配置文件和注解将 SQL 映射为 Java 对象。在实际开发中,查询数据时经常需要进行分页处理。 MyBatis 也提供了支持分页的方案,其主要思路是使用 Limit 偏移量和限制个数,来获取指定数量的数据。下面将会介绍 MyBatis 如何进行分页。
用户1289394
2023/08/22
4260
Java小白学习MyBatis:Mybatis 是如何进行分页的?
SpringBoot+Mybatis实现分页查询[通俗易懂]
分页查询是在web开发中常用的一种技术,当某个页面查询返回的数据量较大时,为了提高性能和用户体验不能将所有数据一次性返回给过前端,这时候就需要用到分页查询了
全栈程序员站长
2022/08/22
3.6K0
SpringBoot+Mybatis实现分页查询[通俗易懂]
Mybatis高级查询(三):分页查询
sql:select * from tableName limit 5,10(注意首个是从0开始的)
许喜朝
2020/08/11
1.4K0
移动商城第三篇(商品管理)【查询商品、添加商品】
逆向生成item 将表名设置成eb_item就行了。 <table schema="" tableName="eb_item" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" >
Java3y
2018/04/02
5.8K0
移动商城第三篇(商品管理)【查询商品、添加商品】
mybatis结合分页的使用及解析.
首先说明: 这里分页是使用了SSM框架+ jsp 来做的, 当然分页还有其他的很多做法, 比如easyUI自带的分页效果. 但是这些原理都是很相似的, 再次只做为学习总结之用. 一, 效果图 这里的截
一枝花算不算浪漫
2018/05/18
1.8K0
Mybatis分页插件PageHelper的配置和使用方法
前言 在web开发过程中涉及到表格时,例如dataTable,就会产生分页的需求,通常我们将分页方式分为两种:前端分页和后端分页。 前端分页 一次性请求数据表格中的所有记录(ajax),然后在前端缓存并且计算count和分页逻辑,一般前端组件(例如dataTable)会提供分页动作。 特点是:简单,很适合小规模的web平台;当数据量大的时候会产生性能问题,在查询和网络传输的时间会很长。 后端分页 在ajax请求中指定页码(pageNum)和每页的大小(pageSize),后端查询出当页的数据返回,前端只负责
用户1225216
2018/03/05
5.1K0
Mybatis分页查询——四种传参方式
         分页查询时,Sql语句使用limit关键字,需要传入开始索引和每页条数两个参数。MyBatis的多参数处理有以下方式:
会洗碗的CV工程师
2023/03/30
1.1K0
Mybatis分页查询——四种传参方式
SSM 使用 mybatis 分页插件 pagehepler 实现分页
前几天在这里分享了手写 sql 分页查询实现分页,现在来看看使用 mybatis 分页插件 pagehepler 来实现分页
Krry
2018/09/10
5.1K1
SSM 使用 mybatis 分页插件 pagehepler 实现分页
基于jdbcTemplate实现物理分页
众所周知,在物联网世界里,我们大部分的操作是来自查询,我们面试经常被问到的QPS其实就是针对查询的,说到查询,根据实际的场景也一般分为单个查询和批量查询,例如:查询会员的详情信息是单个查询,查询会员列表就是典型的批量查询,说到批量查询那么每次查询的数量就要受限,DB单次查询量限制,网络传输带宽限制,应用程序接收数据量大小限制等等,那么这时候分页查询变得非常必要,每次查询出指定大小的单页数据,翻页的时候调整分页参数再次查询。
叔牙
2020/11/19
2.6K0
基于jdbcTemplate实现物理分页
Spring Boot:实现MyBatis分页
想必大家都有过这样的体验,在使用Mybatis时,最头痛的就是写分页了,需要先写一个查询count的select语句,然后再写一个真正分页查询的语句,当查询条件多了之后,会发现真的不想花双倍的时间写 count 和 select,幸好我们有 pagehelper 分页插件,pagehelper 是一个强大实用的 MyBatis 分页插件,可以帮助我们快速的实现MyBatis分页功能,而且pagehelper有个优点是,分页和Mapper.xml完全解耦,并以插件的形式实现,对Mybatis执行的流程进行了强化,这有效的避免了我们需要直接写分页SQL语句来实现分页功能。那么,接下来我们就来一起体验下吧。
朝雨忆轻尘
2019/06/19
2.1K0
Spring Boot:实现MyBatis分页
java mybatis分页查询语句_mybatis分页查询的实现(一)[通俗易懂]
public List selectForPage1(int startIndex,int pageSize);
全栈程序员站长
2022/09/05
1.2K0
推荐阅读
相关推荐
_Mybatis分页查询——四种传参方式
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验