当前位置: 首页 > news >正文

SQL Server分页查询

原生SQL语句,实现SQL Server分页查询

DECLARE @pageCount INT 
DECLARE @pageIndex INT 
SET @pageCount = 10 -- #{page.pageSize}
SET @pageIndex = 2 -- #{page.pageNum}
;WITH ACTE AS (SELECTROW_NUMBER () OVER (ORDER BY id) AS SN,id, table_id, name, workcode, create_time, update_timeFROMlott_result_information),
BCTE AS (SELECT CEILING(MAX(SN) * 1.0 / @pageCount) AS PageTotal FROM ACTE) 
SELECT *,(SELECT COUNT (*) FROM ACTE ) AS total_number,(SELECT PageTotal FROM BCTE ) AS total_page_size 
FROMACTE 
WHEREACTE.SN > (@pageIndex - 1) * @pageCount AND ACTE.SN <= (@pageIndex * @pageCount)

实战

1. 编写Mapper.java的接口

List<LottResultInformation> selectLottResultByPage(@Param("name") String name, @Param("page") BasePage page);

2. 编写Mapper.xml的SQL语句

<?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.demo.framework.mapper.LottMapper"><resultMap id="BaseResultLottResultMap" type="com.demo.framework.entity.LottResultInformation"  extends="BasePageMap"><id column="id" property="id" jdbcType="INTEGER"/><result column="table_id" property="tableId" jdbcType="INTEGER"/><result column="name" property="name" jdbcType="VARCHAR"/><result column="workcode" property="workcode" jdbcType="VARCHAR"/><result column="create_time" property="createTime" jdbcType="TIMESTAMP"/><result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/></resultMap><resultMap id="BasePageMap" type="com.demo.framework.entity.BasePage"><result column="total_number" property="totalNumber" jdbcType="INTEGER"/><result column="total_page_size" property="pageTotal" jdbcType="INTEGER"/></resultMap><select id="selectLottResultByPage" resultMap="BaseResultLottResultMap">DECLARE @pageCount INTDECLARE @pageIndex INTSET @pageCount = #{page.pageSize}SET @pageIndex = #{page.pageNum};WITH ACTE AS (SELECT ROW_NUMBER() OVER (ORDER BY id) AS SN,id, table_id, name, workcode, create_time, update_timeFROM lott_result_information<if test="name != null and name !=''">where name LIKE CONCAT('%',#{name},'%')</if>),BCTE AS (SELECT CEILING(MAX(SN) * 1.0 / @pageCount) AS PageTotal FROM ACTE)SELECT *,(SELECT COUNT(*) FROM ACTE)  AS total_number,(SELECT PageTotal FROM BCTE) AS total_page_sizeFROM ACTEWHERE ACTE.SN > (@pageIndex - 1) * @pageCountAND ACTE.SN &lt;= (@pageIndex * @pageCount)</select></mapper>

这样的话每次查询都会冗余两列total_number和total_page_size;这样也方便每次获取总页数和总条数。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Java获取小程序码示例(三种小程序码)
  • 【动态规划】【完全背包】力扣322. 零钱兑换
  • Java数据结构(八)——插入排序、希尔排序
  • 【超简单】1分钟解决ppt全文字体一键设置
  • es数组包含查询
  • 10.2 TCP IP模型、IP协议、IPv4、子网掩码
  • CAS与原子操作
  • 自动化部署代码【gitlab jenkins 华为云】
  • 【2024高教社杯国赛C题】数学建模国赛建模过程+完整代码论文全解全析
  • 2409wtl,wtl与ddx
  • vscode从本地安装插件
  • 数据集 Ubody人体smplx三维建模mesh-姿态估计 >> DataBall
  • Win10磁盘出现小锁和感叹号的解决办法
  • Nexus配置npm私服
  • 深度学习(九)-图像形态操作
  • Google 是如何开发 Web 框架的
  • [译] 怎样写一个基础的编译器
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • android图片蒙层
  • CSS中外联样式表代表的含义
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • flutter的key在widget list的作用以及必要性
  • github从入门到放弃(1)
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • Leetcode 27 Remove Element
  • Linux后台研发超实用命令总结
  • magento2项目上线注意事项
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • PHP CLI应用的调试原理
  • PV统计优化设计
  • Python爬虫--- 1.3 BS4库的解析器
  • Redis 中的布隆过滤器
  • 创建一种深思熟虑的文化
  • 规范化安全开发 KOA 手脚架
  • 诡异!React stopPropagation失灵
  • 基于webpack 的 vue 多页架构
  • 将 Measurements 和 Units 应用到物理学
  • 近期前端发展计划
  • 警报:线上事故之CountDownLatch的威力
  • 软件开发学习的5大技巧,你知道吗?
  • 手写一个CommonJS打包工具(一)
  • 正则学习笔记
  • 【云吞铺子】性能抖动剖析(二)
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • "无招胜有招"nbsp;史上最全的互…
  • #14vue3生成表单并跳转到外部地址的方式
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #Linux(权限管理)
  • (31)对象的克隆
  • (JS基础)String 类型
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (算法)N皇后问题
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (转)ORM