热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysqlpdo分页类_PDO分页查询模块介绍

简介schu-database是SchuEngine中的数据库模块,可以独立使用,也可以利用zend-servicemanager驱动.与上个版本的schu-database不同,

简介

schu-database是SchuEngine中的数据库模块,可以独立使用,也可以利用zend-servicemanager驱动.

与上个版本的schu-database不同,这个版本完全脱离zend-db,依托于使用最广泛的PDO扩展,实现与数据库的交互.

之所以弃用zend-db作为底层,是因为其高昂的学习成本,直接导致了schu-database更加高昂的学习成本,需要不停的查阅手册,这不利于SchuEngine最初的期望.

在用法上schu-database完全等同于PDO的原生操作,最大程度上降低了学习成本.

在分页上,schu-database会通过传入的SQL语句.在原有SQL的基础上,自动生成分页查询,并且调用极其简单.

依赖

PDO扩展

安装

$ composer require schuengine/schu-database

配置

一般情况下(完全等同于PDO的__construct):

use Schu\Database\Database;

/**

* data source name of PDO $dsn

* db username $user

* db password $password

* options array $options

*/

$db = new Database($dsn, $user, $password, $options);

传入数组:

use Schu\Database\Database;

$dbOptions = [

'dsn' => 'mysql:host=localhost;dbname=test',

'username' => 'username',

'password' => '********',

'options' => [

//PDO options

],

];

$db = new Database($dbOptions);

通过zend-servicemanager

//在 ./config/autoload/global.php中

'schu-database' => [

'dsn' => 'mysql:host=localhost;dbname=test',

'options' => [

//PDO options

],

],

//在./config/autoload/local.php中

'schu-database' => [

'username' => 'username',

'password' => '********',

],

//在应用中

$db = $container->get('schu-database');

使用

在使用过程中,schu-database的操作完全继承了PDO,比PDO多一个接口,即分页.后续介绍.

所以,你可以直接将Schu\Database\Database即上例中的$db当做PDO来操作.

分页

schu-database的分页接口非常简单如下:

/**

* Get paginator result

*

* @param integer $page

* @param integer $itemCountPerPage

* @param string $sql

* @throws \Schu\Database\Exception\InvalidArgumentException

* @throws \Schu\Database\Exception\RuntimeException

* @return Page

*/

public function getPaginatorResult($page, $itemCountPerPage, $sql);

调用后,schu-database会自动解析传入的SQL语句.

获得原始的ORDER BY,LIMIT,OFFSET以及子查询语句.

生成原SQL语句的COUNT语句.

比对LIMIT和COUNT结果,输出正确的结果集总数.

生成分页查询语句.

实例化\Schu\Database\Page,并返回.

类\Schu\Database\Page中包含分页结果集的全部数据,包括:

当前页

总页数

每页条目数

总条目数

结果集数组

原查询语句

分页查询语句

COUNT语句



推荐阅读
  • egg实现登录鉴权(七):权限管理
    权限管理包含三部分:访问页面的权限,操作功能的权限和获取数据权限。页面权限:登录用户所属角色的可访问页面的权限功能权限:登录用户所属角色的可访问页面的操作权限数据权限:登录用户所属 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • Java连接MySQL数据库的方法及测试示例
    本文详细介绍了如何安装MySQL数据库,并通过Java编程语言实现与MySQL数据库的连接,包括环境搭建、数据库创建以及简单的查询操作。 ... [详细]
  • 本文详细介绍如何在SSM(Spring + Spring MVC + MyBatis)框架中实现分页功能。包括分页的基本概念、数据准备、前端分页栏的设计与实现、后端分页逻辑的编写以及最终的测试步骤。 ... [详细]
  • 长期从事ABAP开发工作的专业人士,在面对行业新趋势时,往往需要重新审视自己的发展方向。本文探讨了几位资深专家对ABAP未来走向的看法,以及开发者应如何调整技能以适应新的技术环境。 ... [详细]
  • 本文详细介绍了如何使用Linux下的mysqlshow命令来查询MySQL数据库的相关信息,包括数据库、表以及字段的详情。通过本文的学习,读者可以掌握mysqlshow命令的基本语法及其常用选项。 ... [详细]
  • 在CentOS 7中部署Nginx并配置SSL证书
    本文详细介绍了如何在CentOS 7操作系统上安装Nginx服务器,并配置SSL证书以增强网站的安全性。适合初学者和中级用户参考。 ... [详细]
  • 在使用mybatis进行mapper.xml测试的时候发生必须为元素类型“mapper”声明属性“namespace”的错误项目目录结构UserMapper和UserMappe ... [详细]
  • ArcBlock 发布 ABT 节点 1.0.31 版本更新
    2020年11月9日,ArcBlock 区块链基础平台发布了 ABT 节点开发平台的1.0.31版本更新,此次更新带来了多项功能增强与性能优化。 ... [详细]
  • 本文提供了处理WordPress网站中出现过多重定向问题的方法,包括检查DNS配置、安装SSL证书以及解决数据库连接错误等步骤。 ... [详细]
  • 基于SSM框架的在线考试系统:随机组卷功能详解
    本文深入探讨了基于SSM(Spring, Spring MVC, MyBatis)框架构建的在线考试系统中,随机组卷功能的设计与实现方法。 ... [详细]
  • binlog2sql,你该知道的数据恢复工具
    binlog2sql,你该知道的数据恢复工具 ... [详细]
  • 搭建个人博客:WordPress安装详解
    计划建立个人博客来分享生活与工作的见解和经验,选择WordPress是因为它专为博客设计,功能强大且易于使用。 ... [详细]
  • 本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文探讨了一个Web工程项目的需求,即允许用户随时添加定时任务,并通过Quartz框架实现这些任务的自动化调度。文章将介绍如何设计任务表以存储任务信息和执行周期,以及如何通过一个定期扫描机制自动识别并加载新任务到调度系统中。 ... [详细]
author-avatar
c_陈可儿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有