分页

Mybatis分页

偶尔善良 提交于 2019-12-03 05:30:31
导 jar包 在 Mybatis的主配置文件中加入分页插件 开始分页 dao接口写查询所有的数据的方法 映射文件配置 分页查询 会在dao.list()查询所有数据的sql语句后面自动加上limit分页语句。 来源: https://www.cnblogs.com/Tunan-Ki/p/11780127.html

thinkphp 3.2 增加每页显示条数

南楼画角 提交于 2019-12-03 05:23:05
先上效果图 需求多加一个类似phpmyadmin一样的每页显示条数 查了好久都没找到 看到thinkphp 分页类 是html拼接的 很low 但是方便了我修改 新增需求 在原生分页类基础上 新定义了一个num变量 show方法返回的时候 thinkphp拼接html的地方 新加了一段选择条数的代码 return "<ul class='am-pagination am-pagination-right'>{$page_str}</ul> <div class='am-dropdown am-dropdown-up' data-am-dropdown> <button class='am-btn am-btn-primary am-dropdown-toggle' data-am-dropdown-toggle>显示条数 <span class='am-icon-caret-up'></span></button> <ul class='am-dropdown-content'> <li><a href='".$this->urlNum(10,1)."'>10</a></li> <li><a href='".$this->urlNum(30,1)."'>30</a></li> <li><a href='".$this->urlNum(50,1)."'>50</a></li> <

Thinkphp下实现对数组的分页

眉间皱痕 提交于 2019-12-03 05:22:51
今天终于把两周之前的任务完成了,趁着余热记下来分享给大家。 说一下任务,在thinkphp的框架下实现分页。公司的网站基于Thinkphp框架,一直久闻thinkphp的大名,终于有机会实战了。 thinkphp是MVC架构的,MVC对于任何ITers来说都不陌生, 模型(model)-视图(view)-控制器(controller) 。他将逻辑和数据分开处理,少了很多繁琐的过程。 其实在官方的资料中已经详细的介绍了怎么分页,传送门: http://document.thinkphp.cn/manual_3_2.html#data_page 可是并不适用于数据已经从DB中取出,并且转换为数组的情况,我接触PHP满打满算2个月,接触thinkphp不过3周。之前把很多时间花在了官方文档上,去熟悉thinkphp。也算是磨刀不误砍柴工吧。这里把官方文档当作比较进行阐述: (只举文档上第一个方法):利用Page类和limit方法,代码如下: $User = M('User'); // 实例化User对象 $count = $User->where('status=1')->count();// 查询满足要求的总记录数 $Page = new \Think\Page($count,25);// 实例化分页类 传入总记录数和每页显示的记录数(25) $show = $Page->show()

【操作系统之十】内存分页管理与swap

拜拜、爱过 提交于 2019-12-03 04:54:16
一、虚拟内存 电脑里内存分内存条(这里我们叫物理内存)和硬盘,内存条保存程序运行时数据,硬盘持久保存数据。那么虚拟内存是什么? 程序运行会启动一个进程,进程里有程序段、全局数据、栈和堆,这些都会加载到内存里,每一部分都有对应的内存地址,进程就是一直在处理这些地址中数据。 然而在Linux下,进程不能直接读写内存地址。 进程中能访问的地址,只能是虚拟内存地址(virtual memory address)。 操作系统会把虚拟内存地址翻译成真实的内存地址。 这种内存管理方式,称为虚拟内存(virtual memory)。 特点 1、虚拟内存地址和物理内存地址类似,都是为数据提供位置索引; 2、虚拟内存地址和物理内存地址通过映射关系来关联; 3、不同进程都有自己的一套虚拟内存地址,用来给自己的进程空间编号; 4、进程的虚拟内存地址相互独立。因此,两个进程空间可以有相同的虚拟内存地址,如0x10001000。 5、应用程序的数据读写操作的是虚拟地址,对物理内存地址一无所知。 6、程序中表达的内存地址,也都是虚拟内存地址。 7、进程对虚拟内存地址的操作,会被操作系统翻译成对某个物理内存地址的操作。 优势: 1、借助虚拟内存地址,操作系统可以保障进程空间的独立性,不同进程就不可能相互篡改对方的数据,进程出错的可能性就大为减少。 2、有了虚拟内存地址,内存共享也变得简单

MongoDB分页查询优化方法

假如想象 提交于 2019-12-03 04:37:25
在网上看到很多关于MongoDB分页查询优化的文章,如出一辙。笔者自己实际生产中也遇到此问题,所以看了很多篇文章,这里分享一篇简明扼要的文章分享给大家,希望对大家在使用MongoDB时有所帮助。 凡事做过页面的,一般对分页不会陌生,也不会觉得它有多难:就是limit + offset的组合就可以了呀。但是,危险往往都是从最不起眼的地方开始的。在这里,我先说一下我之前在用MongoDB时遇到的问题。这类问题同样会出现在这种分页方式上。 当时,我需要对于MongoDB中的数据进行处理,每次处理一批,也相当于是按页来操作数据啦。这个没啥难度,直接使用API中的find + skip + limit就可以轻易搞定。迅速把程序写完之后就开始拿产品库开搞了。刚开始一切正常,可过了没多久,就发现整个程序的性能下降了。进入Mongo一查,发现是Table Scan。哇,那个collection中有上千万的数据啊! 此处略去3000字。 总之,问题最后解决了,程序又运行如飞。而解决之道很简单:只用find + limit,不再使用skip(原因自己想)。只不过在find中加了一个条件:上一批的最后一个document的_id。整个代码形似(groovy代码): if (docId) { batch = collection.find(['_id': ['$gt': docId]] as

【完全开源】知乎日报UWP版(上篇):界面设计、官方API分析

[亡魂溺海] 提交于 2019-12-03 04:28:39
出处: http://www.cnblogs.com/xiaozhi_5638/ 【完全开源】知乎日报UWP版(上篇):界面设计、官方API分析 目录 说明 使用Fiddler分析android版API 部分效果图 关于源码 说明 在做 博客园UWP版 的时候其实就有做知乎日报的打算了,前段时间一直出差,在酒店里用Fiddler简单的分析了一下Android官方版本使用到的API,刚开始以为很复杂,后来发现其实很简单。windows商店里知乎日报的应用有好几个,但是网上基本没有什么开源的,这篇文章将介绍一下知乎日报用到的API(Android版)以及目前已经完成的部分界面(为了测试效果,我还特意买了一部lumia 535,399元还送一部移动电源,当天就升级到了Windows 10 Mobile)。等所有的功能都做完了之后我再将源码传上来。 注:后来上网查了一下,发现其实早有人分析了知乎日报的API。 使用Fiddler分析Android版API 首先要准备的工具: android手机+知乎日报APP; Fiddler(大名鼎鼎Telerik出的, Telerik ); 局域网。 原理很简单,打开Fiddler,将它设置成为一个代理,然后将 同一局域网中的 Android手机代理设置为Fiddler所在的电脑。 之后Android手机所有的HTTP请求都会先经过代理

简单实现ibatis的物理分页

最后都变了- 提交于 2019-12-03 04:24:56
本文是原创文章,转载请注明出处: http://my.oschina.net/fqt/blog/52431 一直以来ibatis的分页都是通过滚动ResultSet实现的,应该算是逻辑分页吧。逻辑分页虽然能很干净地独立于特定数据库,但效率在多数情况下不及特定数据库支持的物理分页,而hibernate的分页则是直接组装sql,充分利用了特定数据库的分页机制,效率相对较高。 网上已有 《使ibatis支持hibernate式的物理分页》等类似的文章以 继承 SqlExecutor的方式 实现了物理分页, 但是 侵入性非常强,还得实现数据库方言 ,方法非常复杂。同时 SqlExecutor不是接口,对它的方法继承也不能保证版本稳定。本文中将介绍的方式是实现queryWithSqlHandler方法,在查询前将通过SqlHandler接口把sql传给调用者,再用处理后的sql进行最终查询,从而实现物理分页等功能: //用queryWithSqlHandler方法实现物理分页的例子: public Page queryPage(String statementId, param, final Page page){ final int pageNum = page.getPageNum(); final int pageSize = page.getPageSize(); List list

Hibernate实现分页查询的简要分析

烈酒焚心 提交于 2019-12-03 04:24:43
本文向大家介绍Hibernate查询分页,可能好多人还不了解Hibernate查询分页,没有关系,下面有一个例子,从第2万条开始取出100条记录看完本文你肯定有不少收获,希望本文能教会你更多东西。 Java代码 Query q = session .createQuery("from Cat as c");; q.setFirstResult(20000);; q.setMaxResults(100);; List l = q .list();; 那么Hibernate底层如何实现分页的呢?实际上Hibernate的查询定义在net.sf.hibernate.loader.Loader这个类里面,仔细阅读该类代码,就可以把问题彻底搞清楚。 Hibernate2.0.3的Loader源代码第480行以下: Java代码 if (useLimit); sql = dialect .getLimitString(sql);; PreparedStatement st = session .getBatcher();.prepareQueryStatement(sql, scrollable);; 如果相应的数据库定义了限定查询记录的sql语句,那么直接使用特定数据库的sql语句。 然后来看net.sf.hibernate.dialect.MySQLDialect: Java代码

MySQL 百万级分页优化(Mysql千万级快速分页)

家住魔仙堡 提交于 2019-12-03 03:57:08
一般刚开始学SQL的时候,会这样写 复制代码 代码如下: SELECT * FROM table ORDER BY id LIMIT 1000, 10; 但在数据达到百万级的时候,这样写会慢死 复制代码 代码如下: SELECT * FROM table ORDER BY id LIMIT 1000000, 10; 也许耗费几十秒 网上很多优化的方法是这样的 复制代码 代码如下: SELECT * FROM table WHERE id >= (SELECT id FROM table LIMIT 1000000, 1) LIMIT 10; 是的,速度提升到0.x秒了,看样子还行了 可是,还不是完美的! 以下这句才是完美的! 复制代码 代码如下: SELECT * FROM table WHERE id BETWEEN 1000000 AND 1000010; 比上面那句,还要再快5至10倍 另外,如果需要查询 id 不是连续的一段,最佳的方法就是先找出 id ,然后用 in 查询 复制代码 代码如下: SELECT * FROM table WHERE id IN(10000, 100000, 1000000...); 再分享一点 查询字段一较长字符串的时候,表设计时要为该字段多加一个字段,如,存储网址的字段 查询的时候,不要直接查询字符串,效率低下

mysql 的分页查询

て烟熏妆下的殇ゞ 提交于 2019-12-03 03:56:55
原文 ###一、mysql 的 limit 语法 LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。 SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是 1)。 为了与 PostgreSQL 兼容,MySQL 也支持句法: LIMIT # OFFSET #。第一个#表示记录行的最大数目,第二数表示从第几行开始记录。 ###二、mysql 的分页方式 基本分页方式 SELECT * FROM articles WHERE category_id = 123 ORDER BY id LIMIT 50, 10 子查询的分页方式 SELECT * FROM articles WHERE id >= (SELECT id FROM articles WHERE category_id = 123 ORDER BY id LIMIT 10000, 1) LIMIT 10 JOIN 分页方式 SELECT * FROM `content` AS t1 JOIN (SELECT id FROM `content` ORDER BY id