分页

Mybatis 分页查询

假如想象 提交于 2020-12-16 06:02:27
<select id="getAllMateriel" resultType="Materiel" parameterType="Page"> Select *,(select count(*) from Materiel_Info)as total FROM ( select ROW_NUMBER()Over(order by MaterielCode desc) as rowId,* from Materiel_Info) as mytable <where> <if test="start !=null and end !=null"> rowId between #{start} and #{end} </if> <if test="materielCode != null and materielCode !=''"> AND materielCode like '%${materielCode}%' </if> <if test="materielName !=null and materielCode !=''"> AND materielName like '%${materielName}%' </if> <if test="spec !=null and spec !=''"> AND spec like '%${spec}%' </if> </where> <

我的react组件化开发道路(二) 分页 组件开发

拈花ヽ惹草 提交于 2020-10-28 14:33:41
上一篇文章 主要写了关于react组件化开发的一些基本配置,慢慢的深入到每个组件的详细介绍中,今天我们就来分享react的分页组件 组件基本数据 current:当前页码,默认是第一个 pageSize:每页显示的页数,默认是10页 pagesLength: (很重要) 这个参数的主要作用是用于控制分页的按钮个数,默认是9页,当数据小于90条(因为每页是10条数据,则页数小于9页),则所有的页码直接显示,如图: 如果大于9页,则采用显示部分的形式,如图显示: 下面来具体介绍内部逻辑。 调用函数初始化 在构造函数里面初始化基本调用的函数,主要有:上一页、下一页、点击页码直接跳转、前五页、后五页,基本调用函数介绍完,则要开始着手分页的显示逻辑了。 _initMPagination()函数负责分页的逻辑,先处理基本数据,pageSize,current,还要计算总页数(总页数需要向上取整),现在我们得到了:当前页码,总页数,每页大小(即每页显示数据的条数)。那么接下来需要做的处理就是判断总页数和页面显示页数的大小,如果总页数小于等于页面显示页数的大小,则直接全部显示,如图: 需要为每一个页码绑定一个唯一的key值,判断当前的页面是否等于i,给当前页码不同的样式,并且为每一个页码绑定click函数,这样点击页码的时候能获取到正确的索引值,这个相对比较简单,如果总页数大于页面显示页数的大小

MySQL分页时使用 limit+order by 会出现数据重复问题

跟風遠走 提交于 2020-04-08 11:44:55
1、问题描述 在MySQL中我们通常会采用limit来进行翻页查询,比如limit(0,10)表示列出第一页的10条数据,limit(10,10)表示列出第二页。但是,当limit遇到order by的时候,可能会出现翻到第二页的时候,竟然又出现了第一页的记录。 SELECT `post_title`, `post_date` FROM post WHERE `post_status` = 'publish' ORDER BY view_count desc LIMIT 5, 5   使用上述SQL查询的时候,很有可能出现和LIMIT 0,5相同的某条记录。而如果使用如下方式,则不会出现重复的情况: SELECT * FROM post WHERE post_status = 'publish' ORDER BY view_count desc LIMIT 5, 5 但是,由于post表的字段很多,仅仅希望用这两个字段,不想把post_content也查出来。为了解决这个情况,在ORDER BY后面使用了两个排序条件来解决这个问题,如下: SELECT `post_title`, `post_date` FROM post WHERE `post_status` = 'publish' ORDER BY view_count desc, ID asc LIMIT 5, 5 按理来说

关于Mysql的数据列表的分页显示

社会主义新天地 提交于 2020-04-08 09:37:30
网站( http://www.xqkblog.com )刚发布时没有几篇文章,首页基本上是列出全部内容,最近文章多起来了,需要弄个分页显示。 网站用的是MySQL数据库,获取某一页的文章的代码基本如下: int start = countPerPage*(page-1); 执行select * from .... limit start, countPerPage 于分页时需要列出一些页码,这就需要获得文章总数,一般用select count(*) .......就能获取数据。这里的问题在于为了实现分页,需要对数据库进行两次查询,效率不高,所以想是不是可以用一次查询解决这个问题,上网搜了一下,果然找到答案: mysql> SELECT SQL_CALC_FOUND_ROWS * FROM ... WHERE ... LIMIT 10; mysql> SELECT FOUND_ROWS (); 参数SQL_CALC_FOUND_ROWS表示查询时记录查询结果数 函数FOUNT_ROWS返回上次查询(SQL_CALC_FOUND_ROWS)的结果数 虽然也需要select两次,不过第2次select不需要查询记录,直接返回结果,效率可以提高一倍 来源: oschina 链接: https://my.oschina.net/u/107338/blog/32403

今天写的 Javascript 异步分页组件

拜拜、爱过 提交于 2020-04-06 18:13:28
分页的效果如下: 使用方法: 1、页面上要引用 <script src="Page.js" type="text/javascript"></script> 2、页面放放上一个 一个放 分页组件的 元素 如:DIV,放一个异步请求回 放入要显示 数据 的元素 如 : DIV     <div id="Result">          -----这是要显示数据的地方     </div>      <div id="pager">       ----这里是分页组件要显示的地方     </div> 3、分页的一些初始 设置       //这个是 当用户点 “上一页” “下一页” “首页” “跳转” 时要调用的 函数 注意:要放在 SetPage 的前面,       // 里面的 参数 是当前的页码 必须要有的      PageClick = function (currentPageIndex) {          --- 这里是你要异步请求的数据            --- 请求回来已后 直接放到 要显示的地方 如:上面设置 的 ID 为 Result 的DIV        }       // 这个函数主要是对分页做一些初始化,       //第一个参数是 当前是第几页       //第二个 参数是 总共多少页       //第三个 参数是 分页组件

PHPCMS分页原理

馋奶兔 提交于 2020-04-03 22:17:19
调用很方便,使用listinfo方法,如果小于1页不会返回分页字符串 $page = $_GET['page'] ? intval($_GET['page']) : '1'; $products = $this->product_db->listinfo($where,'', $page, 10); $pages = $this->product_db->pages; listinfo方法 /** * 查询多条数据并分页 * @param $where * @param $order * @param $page * @param $pagesize * @return unknown_type */ final public function listinfo($where = '', $order = '', $page = 1, $pagesize = 20, $key='', $setpages = 10,$urlrule = '',$array = array(), $data = '*') { $where = to_sqls($where); $this->number = $this->count($where); // 获取总数 $page = max(intval($page), 1); // 当前页 $offset = $pagesize*($page-1);

Mysql骚操作:优化大分页查询

北慕城南 提交于 2020-04-03 18:40:16
背景 系统结构如上图。经过排查是因为 系统B拉取数据时间太长导致的推送超时。 系统B拉取数据的方法是根据_tiemstamp(数据操作时间)分页查询系统A的接口,即: 1SELECT 字段名2FROM 表名3WHERE _timestamp >= beginTime AND _timestamp <= endTime 4LIMIT n, m; 由于该数据是从其他数据源中导入的,所以_timestamp这个字段值几乎相同,这就导致了在我们的查询范围内存在大约 150万 的数据。一般遇到这种情况,首先想到的就是 是否需要给_timestamp添加索引 ,这张表上是存在_timestamp索引的。那么为什么还会出现这个问题呢?这就要从分页查询本身说起了。 分页查询的性能瓶颈 B+树简述 首先我们要了解InnoDB存储引擎中的B+数索引。这里我简单总结一下: 上图是一颗B+树,通过观察我们可以发现它的一些特点:   1.每个节点中子节点个个数不能少于m/2个,不能大于m个(B+树是一颗m叉树,图中m=3)   2.根节点的节点个数可以超过m/2个,这是一个例外 上述两点特性是为了保证B+树的查询效率。 节点数超过m越多,在总节点数相同的情况下,树的高度h就越小,此时m叉数就会向链表退化(O(logn)->O(n))。   节点数小于m/2越多,在总节点数相同的情况下,树的高度h就越高

SQL Server Rebuild Index

会有一股神秘感。 提交于 2020-04-03 13:27:28
重建索引是为了减少数据碎片。数据碎片会导致SQL Server进行不必要的数据读,降低SQL Server的性能。重建索引也会同时更新列统计,而如果查询所使用的列缺少或遗漏统计信息,这可能导致SQL Server内部的优化器选择比预期效率低的查询计划。 如果您重建了某张表上的聚集索引,该表上的非聚集索引也同时会被更新。 要更新索引,您可以使用Maintenance Wizard(相关内容您可以参考http://msdn.microsoft.com/en-us/library/ms180074.aspx),或在SQL Server代理(Agent)中运行如下的自定义代码来更新某个数据库中所有表上的索引: USE DatabaseName --Enter the name of the database you want to reindex DECLARE @TableName varchar(255) DECLARE TableCursor CURSOR FOR SELECT table_name FROM information_schema.tables WHERE table_type = 'base table' OPEN TableCursor FETCH NEXT FROM TableCursor INTO @TableName WHILE @@FETCH_STATUS

Beego 学习笔记7:JS分页

大憨熊 提交于 2020-04-02 07:31:01
JS分页 1> JS分页,业务逻辑 (1) 分页采用的是一个叫jquery.pagination.js的一个jquery插件 (2) 需要jquery的支持,此项目中使用到的是jquery-2.1.1.min.js (3) 分页需要的参数有:记录总数,每页显示个数,页码 (4) 添加搜索的条件,作为查询使用 2> 编写新的model,命名为data.go.其代码如下: package models import ( "fmt" "github.com/astaxie/beego/orm" _ "github.com/go-sql-driver/mysql" ) // 用户 type User struct{ Id int64 `orm:"auto"` Name string `orm:"size(100)"` Nickname string `orm:"size(100)"` Pwd string `orm:"size(100)"` Email string `orm:"size(100)"` Sex string `orm:"size(2)"` Roleid string `orm:"size(100)"` Status int64 Phone string `orm:"size(16)"` } //根据用户数据总个数 func GetRecordNum(search

2.内存寻址

江枫思渺然 提交于 2020-03-31 04:26:23
内存地址 三种内存地址:1)逻辑地址(机器指令中操作数或指令的地址) 分段单元 2)线性地址(虚拟地址) 分页单元 3)物理地址(用于内存芯片级内存单元寻址 多CPU时,共享同一内存,RAM芯片由独立的CPU并发访问; 由内存仲裁器保证RAM的读写的串行执行 Linux中的分段 80X86才使用分段(把程序划分为逻辑相关的实体),Linux更喜欢使用分页(当所有进程使用相同的段Register值时,它们共享同样的一组线性地址,这样内存管理简单; RISC对分段的支持有限.). 两者都划分进程的物理地址空间:分段可以给每一个进程分配不同的线性地址空间,而分页可以把同一线性地址空间映射到不同的物理空间. 段选择符由宏__USER/KERNEL_CS/DS定义.对内核代码寻址,吧__KERNEL_CS宏产生的值装入cs寄存器即可.这样执行指令时,只需指定逻辑地址的偏移部分,段选择符已经隐含在寄存器内. 所有段(内核/用户的数据/代码段)的Base=oX0000000,即逻辑地址(的偏移量字段值)=线性地址(的值).所有进程使用相同的逻辑地址. 每个CPU一个GDT,会插入未使用的项使得经常一起访问的描述符能够处于同一32字节的硬件Cache中; 大多数用户态APP不适用局部描述符表,所以定义了一个缺省的LDT供进程共享,同时进程可以创建自己的LDT. 硬件中的分页