SQL——后台分页(C#,mysql)
一、引言
以前数据量不多,一般直接在前端分页;后来随着大数据时代的到来,同时考虑前端的性能问题,后台分页渐渐提上议程。。搞起
二、步骤
1、SQL层面
归根到底都是sql语句问题,后台service主要是处理了中间的逻辑问题。
这里要注意的是
- 可以全部查出来,再在BLL层筛选要的信息,这样做sql语句可以不用变,但是服务器压力比较大,有点2;
- 最好直接用sql查询出想要的结果,然后在DAO层包装成对象,BLL层最好不要进行过多的逻辑处理;
2、DAO与BLL层面
这个层面解决的问题主要是参数传递问题,比如当前页数,总页数,每页数据条数,总记录数等==这个就看个人接口需求了。
其他的方面就是包装数据,返回数据,与正常的使用并没有区别,so easy==
三、代码
1、分页model类Page
public class Page<T>{public int pageCode { get; set; }public int pageSize { get; set; }public int totalPage { get; set; }public int totolRecord { get; set; }public List<T> listBean { get; set; }public Page(){listBean = new List<T>();}}
2、传入想要的页数+数据库查询,以mysql为例
public object searchUnit(int pageCode){Page<UnitCustom> page = new Page<UnitCustom>();page.pageCode = pageCode;page.pageSize = 10;string sqlTotal = "SELECT COUNT(*) FROM v_unit ";page.totolRecord= SQLHelper.ExcuteScalarSQL(sqlTotal);if ((page.totolRecord % page.pageSize) == 0){page.totalPage = page.totolRecord / page.pageSize;}else{page.totalPage = page.totolRecord / page.pageSize+1;}string sql = "SELECT * FROM v_unit LIMIT "+(page.pageCode-1)*page.pageSize+","+page.pageSize;DataTable dt = SQLHelper.GetTable(sql);for (int i = 0; i < dt.Rows.Count; i++){UnitCustom unitCustom = new UnitCustom();unitCustom.F_CODE = dt.Rows[i]["F_CODE"].ToString();unitCustom.F_BUILD_CODE = dt.Rows[i]["F_BUILD_CODE"].ToString();unitCustom.F_POSITION = dt.Rows[i]["F_POSITION"].ToString();unitCustom.F_NAME = dt.Rows[i]["F_NAME"].ToString();unitCustom.F_POSITION_DES = dt.Rows[i]["F_POSITION_DES"].ToString();unitCustom.F_POSITION_REMARK = dt.Rows[i]["F_POSITION_REMARK"].ToString();unitCustom.F_TYPE = dt.Rows[i]["F_TYPE"].ToString();unitCustom.F_MAP_CODE = dt.Rows[i]["F_MAP_CODE"].ToString();unitCustom.F_BUILD_NAME = dt.Rows[i]["F_BUILD_NAME"].ToString();page.listBean.Add(unitCustom);}return page;}
这里使用的limit是mysql的方言,如果用到其他数据库请另行查询,挺简单的。剩下工作就交给前端的小朋友了
四、总结
- 后端分页优点
- 分页过程分析
- 分页具体代码实现
SQL——后台分页(C#,mysql)相关推荐
- mysql在建站起什么作用_数据库操作对比:Sql Server与MYSQL相比有哪些建站优势?...
最近一直在做博客网站,从定位主题到程序和数据库的选择,确实废了不少心思,经过细致的思考,最终将主题定位为读书方面,还有文学和学习笔记,但是对于程序和数据库问题,我一直就比较费心,因为个人是个技术小白, ...
- mysql用户管理,常用sql语句,mysql数据库备份恢复
2019独角兽企业重金招聘Python工程师标准>>> mysql用户管理 grant all on . to 'user1' identified by 'passwd'; gra ...
- 使用命令导入sql文件到mysql数据库时报Failed to open file错误的解决方案
使用命令导入sql文件到mysql数据库时报Failed to open file错误的解决方案 参考文章: (1)使用命令导入sql文件到mysql数据库时报Failed to open file错 ...
- golang mysql 错误 sql: unknown driver “mysql“ (forgotten import?) 解决方法
golang中使用gorm连接mysql的时候会报错:sql: unknown driver "mysql" (forgotten import?) 需要在连接数据库的文件中引入 ...
- mybatisplus执行sql语句_[MySQL]sql语句的执行流程
此篇极客时间专栏<MySQL实战45讲>笔记,文中部分图文来自该专栏. MySQL的执行流程示意图: 大体来说,MySQL可以分为Server层和存储引擎层两部分. Server层包括连接 ...
- sql server转mysql工具下载_SQL Server转换为MySQL工具推荐(Mss2sql)
SQL Server转换为MySQL工具,用了一下 感觉蛮不错的. 分享上来,同时也以便记录下来以后自用. 工具名称:Mss2sql 来个操作流程: 1.首先下载工具 用户名与密码都是www.linu ...
- 一条SQL语句在MySQL中是如何执行的
来源:http://t.cn/E6U9Z9T 概览 本篇文章会分析下一个sql语句在mysql中的执行流程,包括sql的查询在mysql内部会怎么流转,sql语句的更新是怎么完成的. 一.mysql架 ...
- SQL 100+个最佳入门案例实践(覆盖Oralce、SQL Server、Mysql)之基础操作_1_检索数据
SQL基础操作_1_检索数据 目录 7.1.1 数据集 7.1.2 学生选课关系表 7.1.3 供应商关系表 7.2.1 从表中查询所有行和列 7.2.2 从表中查询部分行 7.2.3 查询满足某个条 ...
- c mysql并行多条sql_Linux上使用C语言执行多条SQL命令访问MYSQL数据库的有关问题...
Linux下使用c语言执行多条SQL命令访问mysql数据库的问题 Linux(Ubuntu10.04)系统,MYSQL5.1数据库,C语言! 数据库中有两张表:表A.B! 使用C语言从表A中查询数据 ...
- mysql超长sql查询_超长SQL怎么查询?MySQL列长度限制有哪些 | 学步园
MySQL字符串的限制长度看似重要性不要,其实和整个MySQL数据库的安全性是息息相关的,很值得我们去深入研究分析.SQL注入攻击一直都在被广泛的讨论,然而人们却忽略了今天我将要介绍的这两个安全隐患, ...
最新文章
- 村上春树 开始写作_如何克服对写作的恐惧并找到开始的动力
- Android实例RSS客户端开发(1)
- 浅谈ANR及log分析ANR
- html5表白页面3d,七夕节表白3d相册制作(html5+css3)
- 【洛谷 - P2756】飞行员配对方案问题(网络流最大流,输出方案)
- set集合以及知识点补充
- 又见高铁霸座,占座者嚣张称“就不让”!结果舒适…
- 简易OA漫谈之工作流设计(五,直接上级)
- 5绘制收银台程序_进来学知识了:实操之C/C++的绘制
- 一次性纸餐具行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- python私有成员与公有成员_Python访问限制私有还是公有的介绍(附示例)
- vs2012新建项目时出现错误提示框解决办法
- python csv生成vcf
- Python实现直角坐标系求两点间距离
- 电阻式触摸屏UI设计
- 如何用MATLAB编写简单的音乐程序
- 06-手机登录token生成容联云短信验证用户认证和网关整合(网关做统一权限认证)
- 卸载Win10右下角资讯和兴趣(天气)
- Vue学习记录07--vue路由的使用
- java 图形界面 登陆_java登录图形界面
热门文章
- 简单实现x的n次方pta_数学学霸的解题思路1“降低次方和次元”
- STM32:win10装CH340驱动、获取删除权限
- 穿越火线好友服务器不稳定,穿越火线合区后新危机,玩家:卡顿掉帧没法玩
- 字体系统之字体粗细(CSS、HTML)
- vue使用three.js 第一人称移动。与cs控制角色移动一样(第一人称旋转相机+控制相机移动)
- Open3d之计算源点云与目标云的距离
- java 反复器_java集合类中的枚举器(反复器)
- python使用rpa需要什么插件_使用Python制作ArcGIS插件基础篇——工具介绍
- Halcon——使用标定板标定像素当量
- 如何在定制化组件中实现并使用v-model