`
hegz
  • 浏览: 441592 次
  • 性别: Icon_minigender_1
  • 来自: 茂名
社区版块
存档分类
最新评论

直接利用findAll进行分页查询(限定结果集查询)

阅读更多

findAll是 FLEA_Db_TableDataGateway 类的一个方法,其函数类型如下:

    /**
     * 查询所有符合条件的记录及相关数据,返回一个包含多行记录的二维数组,失败时返回 false
     *
     * @param mixed $conditions
     * @param string $sort
     * @param mixed $limit
     * @param mixed $fields
     * @param mixed $queryLinks
     *
     * @return array
     */
    function & findAll($conditions = null, $sort = null, $limit = null, $fields = '*', $queryLinks = true)


其中第三个参数可以引入数组参数。看该函数中处理$limit参数的代码可得到判 断:

        // 处理 $limit
        if (is_array($limit)) {
            list($length, $offset) = $limit;
        } else {
            $length = $limit;
            $offset = null;
        }
 


再根据其中的一 段代码:

        // 根据 $length 和 $offset 参数决定是否使用限定结果集的查询
        if (null !== $length || null !== $offset) {
            $result = $this->dbo->selectLimit($sql, $length, $offset);
        } else {
            $result = $this->dbo->execute($sql);
        }

 

追 踪分析selectLimit方法(FLEA_Db_Driver_Mysql数据库底层驱动类),分析该方法的代码段:

        if (!is_null($offset)) {
            $sql .= " LIMIT " . (int)$offset;
            if (!is_null($length)) {
                $sql .= ', ' . (int)$length;
            } else {
                $sql .= ', 4294967294';
            }
        }

 

从中可 知,findAll的第三个参数只要传入数组参数array($length, $offset)就可以进行分页,即进行限定结果集的查询。传入的数组参数说明:$length 为每页显示记录数;$offset 为偏移量,计算公式:$offset = ($page - 1) * $length,公式中的 $page 为当前页码,从 1 算起。

大 家分析一下 Flea_Helper_Page 类的代码可知,FleaPHP 的分页助手类其实也是根据此原理来进行分页的。

本人论坛 贴:http://qeephp.com/bbs/thread-7362-1-1.html

分享到:
评论

相关推荐

    基于springmvc实现分页查询

    在服务层,我们可以注入JpaRepository,并利用它的findAll(Pageable pageable)方法来执行分页查询。例如: ```java public interface UserRepository extends JpaRepository, Long> { } // 在服务层 public ...

    JPA分页查询与条件分页查询

    在实现这个方法时,我们可以利用`Specification`来构建复杂的查询条件,将`Pageable`对象传递给`findAll`方法,这样就可以获取到满足条件的分页数据。 在给定的示例代码中,`findByCondition`方法展示了如何根据`...

    JPA复杂查询加分页查询的快速开发

    JPA 提供了分页查询功能,可以根据需要对查询结果进行分页处理。分页查询可以使用 Pageable 对象来实现。Pageable 对象提供了分页查询的相关信息,包括当前页码、每页记录数等。 JPA 复杂查询 JPA 复杂查询可以...

    pageHelper分页失效解决方案.docx

    但是,在使用 PageHelper 进行分页查询时,会出现一些问题,例如当进行一对多结果映射的分页查询时,PageHelper 会自动对 SQL 语句进行处理,但由于左连接查询时,连接条件 on 条件不唯一(即一对多)时,结果会产生...

    java级联查询、分页查询

    这时,可以在分页查询的同时,对每个用户进行级联查询,获取其地址信息。但需要注意,过度使用级联查询可能会导致性能问题,因为它可能会引发"n+1查询"问题,即每获取一个父对象就查询一次子对象,这在数据量大时...

    Hibernate分页查询

    `queryForPage`方法通过`HibernateTemplate`的`executeFind`方法执行HQL查询并进行分页,利用`setFirstResult`设置起始索引(即偏移量),`setMaxResults`设置每页显示的记录数。而`getAllRowCount`方法则通过`find`...

    C# list对象FindAll函数的四种写法

    与方法一类似,但这里直接在调用`FindAll`时定义了委托,而不是预先定义一个方法。 3. **方法三:使用Lambda表达式(带大括号)** ```csharp List<Person> result = list.FindAll(p => { return p.Name.Contains(...

    SpringBoot中使用Spring-data-jpa分页查询

    在Spring Boot应用中,使用Spring Data JPA进行分页查询是一种高效且简洁的方式。Spring Data JPA是Spring框架的一部分,它提供了对Java Persistence API (JPA) 的简化封装,允许开发者通过面向接口的方式进行数据库...

    JFinal增删改查加分页查询

    本篇将深入讲解如何利用 JFinal 实现数据库的增删改查(CRUD)操作,并结合分页查询,帮助你更好地理解和应用 JFinal 在实际项目中的功能。 1. **JFinal 框架简介** JFinal 采用了 MVC(Model-View-Controller)...

    利用标准的SQL语句实现查询记录分页

    在SQL中,这通常涉及对查询结果进行限制,只返回特定范围内的记录。 有多种方法可以实现SQL分页,其中包括使用EJB的Find方法、将所有记录一次性加载到内存中、每次查询一页数据、缓存部分结果以及各种缓存机制。...

    struts2增删改查,struts2分页查询

    在探讨Struts2框架下的增删改查以及分页查询功能时,我们首先需要理解Struts2框架本身。Struts2是Apache软件基金会的一个开源Web应用框架,它继承了Struts1的一些特性,并在此基础上进行了大量的改进和扩展,提供了...

    分页查询例子

    分页查询是一种数据检索策略,它允许用户以较小的块(页面)获取数据,而不是一次性加载整个结果集。这种方式对用户体验和服务器性能都大有裨益,因为它减少了网络传输的数据量,并且使得用户可以逐步浏览和处理结果...

    mybatis-plus分页查询

    此外,`Page` 对象还提供了许多方法,如 `getTotal()`(获取总记录数)和 `getRecords()`(获取当前页数据),方便对分页结果进行进一步处理。 总之,MyBatis-Plus 的分页查询功能大大简化了开发过程,通过简单的...

    springboot分页查询详细案例

    这里我们使用了PageHelper的`startPage`方法来初始化分页参数,然后调用`userRepository.findAll()`获取所有用户数据。 再创建一个Controller类`UserController`,注入`UserService`,并定义一个处理GET请求的方法...

    案例实战-SpringBoot整合Redis实现缓存分页数据查询

    但可以考虑对分页查询的结果进行优化,比如使用Redis的有序集合(Sorted Set)存储分页索引,以便快速定位到特定分页的数据。 总的来说,通过Spring Boot和Redis的整合,我们可以在不牺牲数据新鲜度的前提下,提高...

    spring data 分页查询

    通过Repository的查询方法,你可以得到一个`Page`对象,例如`findAll(Pageable pageable)`。 4. **Repository接口扩展** Spring Data允许你自定义Repository接口,并在其中声明分页查询方法。例如,你可以定义一个...

    springboot结合jpa实现分页,动态多条件查询

    通过这个实现,用户可以在前端输入查询条件,后端会根据这些条件进行数据库查询,并返回分页结果,Thymeleaf模板将结果渲染成用户友好的界面。这在实际应用中非常常见,能够提高用户体验并减轻服务器负载。

    C#,asp.net操作mongodb实例,新增,修改,查询,分页查询,删除,基类封装,打开直接运行

    分页查询:在大型数据集时,分页查询至关重要。`Skip`和`Limit`方法用于实现此功能。例如,`collection.Find(filter).Skip(pageSize * currentPage).Limit(pageSize)`可以获取指定页码的数据。 删除数据:删除单个...

    Jsp中利用JavaBean技术实现分页功能

    最后,在JSP页面中展示查询结果,并提供导航链接以实现分页效果。 ```jsp ; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <title>User List <h2>User List <th>Name <th>Email ...

Global site tag (gtag.js) - Google Analytics