分页

MyBatis面试题(三)

China☆狼群 提交于 2020-03-11 02:21:38
说说对ORM的理解? 答:ORM就是所谓的对象关系映射,通过这门技术,可以让程序中的实体对象和数据库的记录做到互相映射,对象可以借此持久化到数据库记录,数据库记录也能借此转化为实体对象。 为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里? 答:Hibernate就属于全自动ORM映射工具,因为使用Hibernate查询关联对象或者关联集合对象时,可以根据对象关系模型直接获取,所以它是全自动的。而 Mybatis在查询关联对象或关联集合对象时,需要手动编写sql来完成,所以,称之为半自动ORM映射工具。 你对MyBatis的一级缓存和二级缓存有了解吗,说一下? 答:MyBatis默认只开启一级缓存,一级缓存是对同一个SqlSession起作用,在使用SqlSession第一次查询后,MyBatis会将结果缓存起来,如果下次再使用同一个SqlSession调用Mapper方法,sql的参数也完全相同,如果没有声明需要刷新,同时缓存也没有超时,那SqlSession都会取出当前缓存的数据,而不会再次发送SQL到数据库做查询。 MyBatis的二级缓存是Application级别的缓存,它可以提高对数据库查询的效率,以提高应用的性能。SqlSessionFactory层面上的二级缓存默认是不开启的,二级缓存的开启需要进行配置,实现二级缓存的时候

GRIDVIEW 用法

♀尐吖头ヾ 提交于 2020-03-10 23:43:36
一、GridView和DataGrid的异同 GridView 是 DataGrid的后继控件,在.net framework 2 中,虽然还存在DataGrid,但是GridView已经走上了历史的前台,取代DataGrid的趋势已是势不可挡。GridView和DataGrid功能相似,都是在web页面中显示数据源中的数据,将数据源中的一行数据,也就是一条记录,显示为在web页面上输出表格中的一行。 GridView相对于DataGrid来说,具有如下优势,功能上更加丰富,因为提供了智能标记面板(也就是show smart tag)更加易用方便,常用的排序、分页、更新、删除等操作可以零代码实现!具有PagerTemplate属性,可以自定义用户导航页面,也就是说分页的控制更加随心所欲。GridView和DataGrid在事件模型上也多有不同之处,DataGrid控件引发的都是单个事件,而GridView控件会引发两个事件,一个在操作前发生,一个在操作后发生,操作前的事件多位***ing事件,操作后的事件多位***ed事件,比如Sorting 事件和sorted 事件,RowDeleting和RowDeleted事件。 二、GridView操作初步 1、显示数据源中的数据 从ToolBox中选取GridView控件拖到页面上,然后点击右键,选择Show Smart Tag

pageHelper分页插件使用

早过忘川 提交于 2020-03-09 21:54:31
PageHelper是一款开源免费的Mybatis第三方物理分页插件,个人觉得也是最方便使用的分页插件,相信大家没使用过,也听说过。在介绍使用方法前我们来看看PageHelper的一些方法作用: 再来介绍使用方法。 首先我们得添加PageHelper的依赖 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.1.0</version> </dependency> 然后需要在mybatis-config.xml中配置PageHelper <plugin interceptor="com.github.pagehelper.PageHelper"> <property name="dialect" value="mysql"/> </plugin> 这样配置就完成了,是不是很简单,就可以在代码使用了,服务层模板如下: //pageNum展示哪一页,pageSize每一页展示的条数 public PageInfo<DemoDO> getALLDemoInfo(int pageNum,int pageSize) { //使用时,先执行PageHelper.startPage(pageNum,pageSize) PageHelper

Mybatis实现数据分页

血红的双手。 提交于 2020-03-09 08:10:50
在很多中情况下,前端许要进行分页的数据显示,当前端发送分页数据请求时,我们需要在数据库中取出该页的数据。利用mybatis实现分页请求主要有两种方法 1、利用mysql的分页语句 limit #{startIndex},#{pageSize} 这时我们需要在mapper配置文件中进行修改,如下: <select id="selectAll" parameterType="Map" resultType="Goods"> select * from theme limit #{startIndex},#{pageSize} </select> startIndex为该分页数据的起始索引下标,pageSize为每页的数据条数 另外Dao层也需要进行相应修改,调用时将startIndex和pageSize传到mapper的配置文件中,这里采用Hashmap键值对的方式,将两个值传入。 public List<Goods> getAll(int currentPage,int pageSize) throws IOException { SqlSession sqlSession = MybatisUtil.getSqlSession(); Map<String,Integer> map = new HashMap<String, Integer>(); map.put(

Mybatis分页插件一一PageHelper

为君一笑 提交于 2020-03-09 02:25:19
Mybatis分页插件一一PageHelper 介绍: com.github.pagehelper.PageHelper是一款好用的开源免费的Mybatis第三方物理分页插件;他的原理是利用mybatis拦截器,在查询数据库的时候,拦截下SQL,然后进行修改,从而实现分页(如果你硬是想知道原理,mybatis拦截器,学习过后你就知道什么回事了)。 优点 :无需你自己去封装以及关心sql分页等问题,使用很方便,前端取数据也很方便。 使用: 引入依赖: < ! -- 导入pagehelper相关依赖 -- > < dependency > < groupId > com . github . pagehelper < / groupId > < artifactId > pagehelper < / artifactId > < version > 5.1 .2 < / version > < / dependency > < ! -- 如果你的项目是springboot,需添加下面两个依赖 -- > < dependency > < groupId > com . github . pagehelper < / groupId > < artifactId > pagehelper - spring - boot - autoconfigure < / artifactId > <

LINQ通用分页绑定方法的实现

心已入冬 提交于 2020-03-08 08:24:20
在LINQ中,IQueryable 接口和IEnumerable 接口都分别提供了Skip方法和Take方法,用来做分页非常合适.因此我就想用他们做一个分页控件,因为IQueryable 是继承自 IEnumerable 的。因此使用接口仅需要针对后者就可以了。使用的时候只需提供数据源、绑定的GridView的、每页大小即可。现在问题就出了在数据源上,要求用户提供一个数据源类型,即IQueryable 接口和IEnumerable 接口? T是可确定类型(已知类型)的话还可以,若T是匿名类型,如  var list = from it in de.Customers where it.City == "abc" select new { it.City, it.Country };   list的类型只有在运行时才能得到,怎么办呢!其实很简单我,我们可以使用 “参数推导泛型类型”的方法来实现:   看下面的代码(因为重点不在这里所以 代码写的比较粗糙):  public void BindBoundControl(IEnumerable DataSource, GridView BoundControl, int PageSize)   {   //获取总记录数(这里可以使用参数传入总页数 就不必每次都执行下面方法)   int totalRecordCount =

请求分页管理方式实现虚拟内存

老子叫甜甜 提交于 2020-03-08 03:42:19
请求分页系统建立在基本分页系统基础之上,为了支持虚拟存储器功能而增加了请求调页功能和页面置换功能。请求分页是目前最常用的一种实现虚拟存储器的方法。 在请求分页系统中,只要求将当前需要的一部分页面装入内存,便可以启动作业运行。在作业执行过程中,当所要访问的页面不在内存时,再通过调页功能将其调入,同时还可以通过置换功能将暂时不用的页面换出到外存上,以便腾出内存空间。 为了实现请求分页,系统必须提供一定的硬件支持。除了需要一定容量的内存及外存的计算机系统,还需要有页表机制、缺页中断机构和地址变换机构。 页表机制 请求分页系统的页表机制不同于基本分页系统,请求分页系统在一个作业运行之前不要求全部一次性调入内存,因此在作业的运行过程中,必然会出现要访问的页面不在内存的情况,如何发现和处理这种情况是请求分页系统必须解决的两个基本问题。为此,在请求页表项中增加了四个字段,如图1所示。 图1 请求分页系统中的页表项 增加的四个字段说明如下: 状态位P:用于指示该页是否已调入内存,供程序访问时参考。 访问字段A:用于记录本页在一段时间内被访问的次数,或记录本页最近己有多长时间未被访问,供置换算法换出页面时参考。 修改位M:标识该页在调入内存后是否被修改过。 外存地址:用于指出该页在外存上的地址,通常是物理块号,供调入该页时参考。 缺页中断机构 在请求分页系统中,每当所要访问的页面不在内存时

thinkphp分页bug--解决thinkphp分页乱码问题

只愿长相守 提交于 2020-03-08 02:16:12
thinkphp自带的分页类存在bug,例如当我们搜索关键词时,关键词为中文,第二次点击分页的时候,就会乱码,不能正常的显示我们需要的页码。本文就这一问题给出解决方案。 出现乱码的问题是因为thinkphp分页类中的,构造url时存在的问题,thinkphp的分页url是使用"/"来分隔参数的,在将数据传递到url中时,经过url加密,第二次传递的时候就会乱码了,而如果我们使用"?"和"&"来分隔参数的话,就不会出现这个问题了。 所以要修改的内容是thinkphp的分页类文件:/ThinkPHP/Extend/Library/ORG/Util/Page.class.php文件。 具体修改的代码是: 1、在thinkphp分页类文件Page.class.php的最后加上一个自定义函数,用于替换url中的参数分隔符号,函数内容如下: private function clin_page_url($parameter){ $url = U(''); $url = str_replace('.html', '?', $url); foreach ($parameter as $key => $value) { $url .= $key.'='.$value.'&'; } $url = substr($url, 0,-1); return $url; } 2、修改最终生成的url 在Page

前后台分页区别

﹥>﹥吖頭↗ 提交于 2020-03-07 12:53:02
3. 分页实现技术(2种) 1). 前台分页 请求获取数据: 一次获取所有数据, 翻页时不需要再发请求 请求接口: 不需要指定请求参数: 页码(pageNum)和每页数量(pageSize) 响应数据: 所有数据的数组 2). 基于后台的分页 请求获取数据: 每次只获取当前页的数据, 翻页时要发请求 请求接口: 需要指定请求参数: 页码(pageNum)和每页数量(pageSize) 响应数据: 当前页数据的数组 + 总记录数(total) 3). 如何选择? 基本根据数据多少来选择 来源: https://www.cnblogs.com/korea/p/11142827.html

Java Web -【分页功能】详解

瘦欲@ 提交于 2020-03-07 12:48:32
分页简介 分页功能在网页中是非常常见的一个功能, 其作用也就是将数据分割成多个页面来进行显示。 使用场景: 当取到的数据量达到一定的时候,就需要使用分页来进行数据分割。 当我们不使用分页功能的时候,会面临许多的问题: 客户端的问题: 如果数据量太多,都显示在同一个页面的话,会因为页面太长 严重影响到用户的体验,也不便于操作 ,也会出现 加载太慢 的问题。 服务端的问题: 如果数据量太多,可能会造成 内存溢出 ,而且一次请求携带的数据太多, 对服务器的性能也是一个考验。 分页的分类 分页的实现分为真分页和假分页两种,也就是物理分页和逻辑分页。 1.真分页(物理分页): 实现原理: SELECT * FROM xxx [WHERE...] LIMIT #{param1}, #{param2} 第一个参数是开始数据的索引位置 第二个参数是要查询多少条数据 优点: 不会造成内存溢出 缺点: 翻页的速度比较慢 2.假分页(逻辑分页): 实现原理: 一次性将所有的数据查询出来放在内存之中 ,每次需要查询的时候就直接从内存之中去取出相应索引区间的数据 优点: 分页的速度比较快 缺点: 可能造成内存溢出 传统的分页方式 对于假分页的实现方式很简单,只需要准备一个集合保存从数据库中取出的所有数据,然后根据当前页面的码数,取出对应范围的数据显示就好了, 我们这里基于物理分页来实现。 分页的原理