分页

tp5分页数据

家住魔仙堡 提交于 2020-01-08 09:49:07
paginate分页完成之后,生成的分页数据是对象形式存在的,所以如果要调用其分页的数据,比如想要遍历修改数据中的值,等需要进行 foreach操作的地方,需要使用 $re=Db::->table('ldptype_ex') ->alias('a') ->paginate(5); $data = $re->item(); //获取分页的数据 $total = $re->total(); //获取分页的总条数 $lastpage = $re->last_page(); //获取分页数据的总页码数    来源: https://www.cnblogs.com/dayin1/p/12164771.html

Mybatis+MySQL动态分页查询

*爱你&永不变心* 提交于 2020-01-08 01:53:18
https://blog.csdn.net/qq_34137397/article/details/63289621 mybatis有两种分页方法 1、内存分页,也就是假分页。本质是查出所有的数据然后根据游标的方式,截取需要的记录。如果数据量大,开销大和内存溢出。 第二中是,真正的物理分页 还有一种是使用分页拦截器实现的 常见的数据分页有哪几种实现??基于数组的分页实现?基于sql语句的分页实现?还是通过拦截器进行数据分页功能?还是通过RowBounds参数进行物理分页?几种都是常用的分页实现原理 一.借助数组进行分页 原理:进行数据库查询操作时,获取到数据库中所有满足条件的记录,保存在应用的临时数组中,再通过List的subList方法,获取到满足条件的所有记录。 二. 借助Sql语句进行分页,物理分页 实现:通过sql语句实现分页也是非常简单的,只是需要改变我们查询的语句就能实现了,即在sql语句后面添加limit分页语句。 首先还是在StudentMapper接口中添加sql语句查询的方法,如下: List<Student> queryStudentsBySql(Map<String,Object> data); 然后在StudentMapper.xml文件中编写sql语句通过limiy关键字进行分页: <select id="queryStudentsBySql"

mongo分页查询方式

折月煮酒 提交于 2020-01-07 10:34:54
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 闲下来,想了下准备总结下最近在mongo查询上所遇到的一些问题,我在这里罗列一下。 1.mongo使用shell的find查询: 查询long型字段时,需要在查询条件里使用NumberLong("xxxx")包裹起来,这样才是精确查找,不然查找到的数据是不一致 2.mongo添加一个字段: 为mongo的每一条记录都添加一个字段时,使用uodate时,加入插入的字段默认值是int型的,那么直接填写值的话,插入后会变成double型的数据,后面自动添加“.0,必须用NumberInt(xx)来包裹;因为mongo是基于bason格式的,而bason里面是有int类型,而mongo的shell是基于json格式的,json格式中只有number类型,所以才使用int或者long型必须用number来包裹; 3.mongo分页方式讨论 ①一般的分页使用skip,limit来结合,这个方式实现起来很简单,并且前期问题也不打,但是当数据量上去以后就会越来越卡,我测试过10W数据量,当一次查询发起的时候会卡很久,建议小数据量时使用; ②第二种方式是基于瀑布流形式的下拉分页,其通过排序某个唯一字段,然后获取上一条记录大这个字段通过对比获取上一页或者下一页的数据,这个方式是我们现在业务中普遍使用的

《操作系统真象还原》分页

北城余情 提交于 2020-01-06 21:46:06
  本节是阅读第五章的收获。下面将阐述一些分页的相关内容。 分页 什么是分页   分页,顾名思义,就是将内存分成大小相同的页。分页,通过映射的方式,将连续的线性地址转化为不连续的物理地址;这样,在处理器进入分页模式之后,用户直接访问的并不是物理地址,而是分页模式下的虚拟地址。   上面有三个和地址相关的概念,分别为虚拟地址、线性地址和物理地址。   在打开保护模式之前,仅有线性地址和物理地址的概念,物理地址就是CPU最终访问的真正地址,是指令或数据真正保存的数据的地方。而线性地址代表“段基址+段内偏移地址”,由于在实模式下,段基址+段内偏移地址等于物理地址,所以线性地址和物理地址数值上是一样的。   而打开保护模式且打开分页模式之后,用户直接访问的是虚拟地址空间或是线性地址空间,线性地址仍然是段基址+段内偏移地址,虚拟地址数值上与线性地址相同。从概念上线性地址空间和虚拟地址空间有些不同,因为线性地址空间只有段的概念,没有页的概念;通过分页机制,将线性地址空间中大小不等的段转化为虚拟空间中大小相等的页。虚拟地址通过页表和页目录转化为最终的物理地址,分页机制如下图:   总的来说,虚拟地址就是分页后程序或任务访问的地址,线性地址就是段基址+段内偏移地址,物理地址是CPU最终访问的地址。 为什么要分页   那么为什么要分页呢?主要原因是 内存分配的时候存在外部碎片

第 8 章 内存管理策略

二次信任 提交于 2020-01-06 17:49:11
  为了实现性能改进,应将多个进程保存在内存中,也就是说必须共享内存。 8.1 背景   内存是现代计算机运行的核心。内存由一个很大的字节数组来组成,每个字节都有各自的地址。 8.1.1 基础硬件   CPU可以直接访问的通用存储只有内存和处理器内置的寄存器。   每个进程都有一个独立的内存空间,可以保护进程不会互相影响。 基地址寄存器(base register):最小的合法的物理内存地址。 界限地址寄存器(limit register):指定了范围的大小。   合法范围为(base, base + limit)register   内存空间保护的实现是通过CPU硬件对在用户模式下产生的地址与寄存器的地址进行比较来完成的。   只有操作系统可以通过特殊的特权指令,才能加载基地址寄存器和界限地址寄存器。不允许用户程序修改它们。 8.1.2 地址绑定   源程序中的地址通常是用符号表示的,编译器通常将这些符号地址绑定到可重定位的地址。链接程序或加载程序再将这些可重定位的地址绑定到绝对地址。每次绑定都是从一个地址空间到另一个地址空间的映射。   通常,指令和数据绑定到存储器地址可在沿途任何一步中进行: 编译时 加载时 执行时 8.1.3 逻辑地址空间和物理地址空间   CPU生成的地址通常称为逻辑地址,而内存单元看到的地址(即加载到内存地址寄存器)通常称为物理地址。  

iBatis3基于方言(Dialect)的分页

人走茶凉 提交于 2020-01-06 17:30:32
(注:以下代码是基于ibatis3 beta4的扩展,ibatis3正式版如果实现改变,将会继续跟进修改) iBatis3默认使用的分页是基于游标的分页,而这种分页在不同的数据库上性能差异不一致,最好的办法当然是使用类似hibernate的基于方言(Dialect)的物理分页功能。 iBatis3现在提供插件功能,通过插件我们可以编写自己的拦截器来拦截iBatis3的主要执行方法来完成相关功能的扩展。 能够拦截的的类如下: Java代码 收藏代码 Executor (update,query,flushStatements,commit,rollback,getTransaction,close,isClosed) ParameterHandler (getParameterObject,setParameters) ResultSetHandler (handleResultSets,handleOutputParameters) StatementHandler (prepare,parameterize,batch,update,query) 但此次我们感兴趣的是Executor.query()方法,查询方法最终都是执行该方法。 该方法完整是: Java代码 收藏代码 Executor.query(MappedStatement ms, Object parameter,

PageHelper 分页bug order by

谁都会走 提交于 2020-01-06 14:04:04
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 用PageHeler 分页很方便 但是再遇到sql 语句中用order by 的时候 分页会自动过滤掉这些,这时候我们查询总的条数,需要手动实现一下,具体如下: 查询顺序不能变,先差列表,再修改total PageHelper.startPage(vo.getCurrentPage(), vo.getPageSize(),false); List<PurchaseOrder> list = purchaseOrderService.list(vo); PageInfo<PurchaseOrder> info = new PageInfo<PurchaseOrder>(list); Long total = purchaseOrderMapper.countByParam(vo); if(total != null){ info.setTotal(total); } 来源: oschina 链接: https://my.oschina.net/kuchawyz/blog/3153159

SQL Server分页查询存储过程

情到浓时终转凉″ 提交于 2020-01-06 02:16:57
--分页存储过程 create PROCEDURE [dbo].[commonPagination] @columns varchar(500), --要显示的列名,用逗号隔开 @tableName varchar(100), --要查询的表名 @orderColumnName varchar(100), --排序的列名 @order varchar(50), --排序的方式,升序为asc,降序为 desc @where varchar(100), --where 条件,如果不带查询条件,请用 1=1 @pageIndex int, --当前页索引 @pageSize int, --页大小(每页显示的记录条数) @pageCount int out --总页数,输出参数 as begin declare @sqlRecordCount nvarchar(1000) --得到总记录条数的语句 declare @sqlSelect nvarchar(1000) --查询语句 set @sqlRecordCount=N'select @recordCount=count(*) from ' +@tableName + ' where '+ @where declare @recordCount int --保存总记录条数的变量 exec sp_executesql

Mybatis Plus 使用详解

限于喜欢 提交于 2020-01-06 00:49:19
Mybatis Plus 是Mybatis的增强插件,对数据库操作Mybatis Plus提供了抽象层次比Mybatis更高的操作方法。 Wrapper是Mybatis Plus里拼接sql的包装类。具体的各种查询功能可以查看 Mybatis Plus 条件构造器官方文档 一、自定义查询字段 EntityWrapper 的setSqlSelect可以定义需要查询的库表字段。但是很多时候我们查询的数据可能来自不同的表,我们这时候可能需要用到子查询,那么这时候该怎么使用EntityWrapper 呢? 答案是直接写在setSqlSelect里面。例 Wrapper<Res> ew = new EntityWrapper<>(); ew.eq("deleted", 0); ew.setSqlSelect("*", "(select name from res_type where id=res_type_id) as res_type_name", "(select name from probe where id=probe_id) as probe_name"); 二、条件查询 一个很常见的场景是查询某字段的时候如果值不为空则查询,否则不查询。Mybatis Plus的拼接sql方法有一个条件拼接。 ew.eq(boolean condition,String column

Lodop控件NewPage();测试输出空白页

萝らか妹 提交于 2020-01-05 21:01:08
LODOP.NewPage();和LODOP.NewPageA();是强制分页语句,两者的区别可查看本博客的相关博文: Lodop强制分页LODOP.NewPage()和LODOP.NewPageA() 可在打印项之间强制分页,手动分页,如果一个任务在不添加打印项的情况下一开始就分页,结果会怎样?如果强制分页之间没有任何打印项又会怎样?该文就是测试这两个的。 如果按照想法,一开始没打印项就强制分页,那么第一页应该是空白页,分页语句之间没有打印项,应该也会是空白页,实际测试发现不是这样的。 一开始没打印项就强制分页,在第一个打印项之前,不管多少次分页,都不会有空白页。 有打印项之后,该打印项会作为第一页,往后如果强制分页之间没有打印项,会显示成空白页。 由于多页预览截图较麻烦,因此把纸张设置小,然后用xps虚拟打印机打印出文件,一块用xps查看器查看,一起截图。(打印开发避免浪费纸张,虚拟打印机测试是很有必要的) 效果如图所示: 测试中JS代码: <script language="javascript" type="text/javascript"> var LODOP; //声明为全局变量 function prn1_preview() { //单个任务循环 LODOP=getLodop(); LODOP.PRINT_INIT("");//初始化在循环中 LODOP.SET