分页

阿里最新38道Java面试题解析(MyBatis+消息队列+Redis)

∥☆過路亽.° 提交于 2019-12-01 08:48:55
一、谈谈你对 MyBatis 的理解? 1. Mybatis是一个半ORM(对象关系映射)框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身,不需要花费精力去处理加载驱动、创建连接、创建 Statement 等繁杂的过程。程序员直接编写原生态 SQL,可以严格控制 SQL 执行性能,灵活度高。 2. MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO 映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。3. 通过 XML 文件或注解的方式将要执行的各种 Statement 配置起来,并通过 Java 对象和 Statement 中 SQL 的动态参数进行映射生成最终执行的 SQL 语句,最后由 MyBatis 框架执行 SQL并将结果映射为 Java 对象并返回。(从执行 SQL到返回 Result 的过程)。 二、MyBaits 的优缺点有哪些? § 优点: 1. 基于 SQL 语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL 写在 XML 里,解除 SQL 与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态 SQL 语句,并可重用; 2. 与 JDBC 相比,减少了代码量,消除了 JDBC 大量冗余的代码,不需要手动开关连接; 3. 很好的与各种数据库兼容(因为

SpringBoot项目集成PageHelper使用

我是研究僧i 提交于 2019-12-01 08:41:26
SpringBoot项目集成PageHelper使用 一、开始 ​ 地址: https://github.com/pagehelper/Mybatis-PageHelper ​ 在spring boot项目中使用PageHelper,只需要两步: 1、导入maven <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.0.0</version> </dependency> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>2.1.5</version> </dependency> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.10</version> </dependency> 2、使用 //[pageNum, pageSize] 页码

微擎分页的实现

主宰稳场 提交于 2019-12-01 08:21:18
微擎分页的实现 $page_index = max(1, intval($_GPC['page'])); $page_size = 50; $page_total = intval(pdo_fetch("SELECT COUNT(*) as cnt FROM ".tablename('cgc_fd_yuchan_pjq'))['cnt']); $pjqs = pdo_getall('cgc_fd_yuchan_pjq', array(), array(), '', array(), array($page_index, $page_size)); var_dump($pjqs); $pager = pagination($page_total, $page_index, $page_size); 来源: https://www.cnblogs.com/GetcharZp/p/11672769.html

mysql 分页offset过大性能问题解决思路

喜你入骨 提交于 2019-12-01 07:49:55
在公司干活一般使用sqlserver数据库。rownumber分页贼好用。 但是晚上下班搞自己的事情就不用sqlserver了。原因就是自己的渣渣1核2g的小服务器完全扛不住sqlserver那么大的大块头,于是就使用Mysql数据库。 一般使用MySQL分页都是使用limit,我也这么使用的。 今天晚上打开一个服务器上的小网站,顺便点几下看看有没有问题,不小心点到了最后一页,卡了我近10秒才反应过来。我数据库就7w多条数据。虽说服务器垃圾也不至于卡这么久吧。。 然后把分页的sql找出来,去数据库手动执行。发现确实越往后翻页越慢,翻到四万多条的时候,都好几秒才响应了。这完全无法接受啊。难怪最近网站的搜索引擎权重又降低了。。5555 分页sql如下 select id ,title,time from table where type = ‘xxx’ ORDER BY createtime limit 10 offset 45000 因为Id是主键,我尝试去掉了title和time字段,马上就秒开了。 查看数据库执行计划,索引是已经命中了。但是为什么还是很卡呢? 查阅了不少资料,得出两个结论 1.服务器实在是太垃圾了。 2.limit x offset x 分页确实有性能问题,据说阿里的dba都不太建议offset太多。。。 解决方案: 既然都无法使用offset,那就曲线救国。

tp3.2中自带的分页

こ雲淡風輕ζ 提交于 2019-12-01 07:18:37
后端: //展示和分页 public function show() { $User = M('wen'); // 实例化User对象 $count = $User->count();// 查询满足要求的总记录数 $Page = new \Think\Page($count,3);// 实例化分页类 传入总记录数和每页显示的记录数(25) $show = $Page->show();// 分页显示输出// 进行分页数据查询 注意limit方法的参数要使用Page类的属性 $list = $User->join("lan on wen.b_id=lan.b_id")->limit($Page->firstRow.','.$Page->listRows)->select(); $this->assign('arr',$list);// 赋值数据集 $this->assign('page',$show);// 赋值分页输出 $this->display("show"); // 输出模板 } 前端: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <center> <table> <tr> <td>ID</td> <td>标题</td>

Django REST Framework之分页器

不问归期 提交于 2019-12-01 01:45:41
Django REST Framework提供了三种分页器: PageNumberPagination。基于Django Paginator封装,使得操作更方便,只需要做一些配置即可。分页方式:根据页数和每页的大小进行分页。 LimitOffsetPagination。分页方式:从第几条开始找,向后找多少条。 CursorPagination。实现比较复杂,有自己的特点。 说明:一般在分页前,需要先将数据排序。如果不排序,会报警告 PageNumberPagination utils/pagination.py from rest_framework.pagination import PageNumberPagination class MyPagination(PageNumberPagination): # 只需要做一些配置即可 page_size = 1 # 每页的数据量(默认) page_query_param = "page" # 请求参数中的 page参数名 page_size_query_param = "size" # 请求参数中的 page_size参数名 max_page_size = 3 # 每页最大数量,请求参数中如果超过了这个配置,不会报错,会按照此配置工作 需要说明的是:我们配置的参数名,需要使用get请求。DRF在实现过程中只是针对get获取参数

yii2分页扩展之实现跳转到具体某页

僤鯓⒐⒋嵵緔 提交于 2019-12-01 00:47:34
作者:白狼 出处: http://www.manks.top/yii2_linkpager_widget.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 先上图看效果,样式虽然有点丑,这都不重要,我相信拿到代码的你们更注重的是这功能怎么实现的! (图片见原文) 从上图中不难看出,我们制定跳转到某页的功能是基于linkpager之上的扩展,这根我们之前实现的分页扩展明显不同,之前的明显就是重写了!当然,这都不重要,我们看看GoLinkPager的具体实现!名字起的有点lower,不重要! 1、在frontend\components目录新建GoLinkPager类文件 2、该类继承yii\widgets\LinkPager;,如下: namespace frontend\components; use yii\widgets\LinkPager; use yii\helpers\Html; class GoLinkPager extends LinkPager { } 3、添加属性public $go = false; //是否包含跳转功能跳转 默认false 4、重写父类linkPager的renderPageButtons方法,具体直接参考下面完整版代码,可主要看go部分的代码实现。

MySQL高效分页解决方案集

旧时模样 提交于 2019-11-30 21:06:58
很久以前的一次面试中,被面试官问到这个问题,由于平时用到的分页方法不多,只从索引、分表、使用子查询精准定位偏移以外,没有使用到其它方法。 后来在看其它博客看到了一些不同的方案,也一直没有整理。今天有时间,整理出来,分享给大家。 一,最常见MYSQL最基本的分页方式: select * from content order by id desc limit 0, 10 在中小数据量的情况下,这样的SQL足够用了,唯一需要注意的问题就是确保使用了索引。随着数据量的增加,页数会越来越多,查看后几页的SQL就可能类似: select * from content order by id desc limit 10000, 10 一言以蔽之,就是越往后分页,LIMIT语句的偏移量就会越大,速度也会明显变慢。 此时,我们可以通过2种方式: 一,子查询的分页方式来提高分页效率,飘易用的SQL语句如下: SELECT * FROM `content` WHERE id (SELECT id FROM `content` ORDER BY id desc LIMIT ".($page-1)*$pagesize.", 1) ORDER BY id desc LIMIT $pagesize 为什么会这样呢?因为子查询是在索引上完成的,而普通的查询时在数据文件上完成的,通常来说,索引文件要比数据文件小得多

fastreport分页和空行填充问题

僤鯓⒐⒋嵵緔 提交于 2019-11-30 19:57:36
处理时,分页和空行填充是这样的: var PageLine: integer; //在現在頁列印到第幾行 PageMaxRow: integer=15; //設定每頁列數 procedure DetailData1OnBeforePrint(Sender: TfrxComponent); begin PageLine := <line> mod PageMaxRow; if (PageLine = 1) and (<line> > 1) then Engine.newpage; end; procedure PageFooter1OnBeforePrint(Sender: TfrxComponent); var i: integer; begin i := iif(PageLine=0, PageMaxRow, PageLine); if i=0 then exit; while i < PageMaxRow do begin i := i + 1; Engine.ShowBand(DetailData1); //印空白表格DetailData1是明细数据控件 end; end; 每页15行,不到15行时自动填充空行,但是报表程序一运行,程序就退出了,分页我单独试了,可以正常运行。但是空行填充加进去就会出现这个问题。 来源: CSDN 作者: 达达达达达 链接: https:/