分页:

分页是一种通过表数据分段展示给用户的技能。
利用户每次看到的是个中一部分数据,而非全部数据,就和我们翻阅电子书或者阅读书原形似。
分页能加快页面反应速率,增强用户利用体验。

古典JDCB实现分页:

先查询出总的条数,用于打算总页数;

select count(1) from 表 where 条件;

再根据pageNum和pageSize打算出startRownum和endRownum;

php分页面试重学Mybatis五分页 含面试题 Java

再拼接sql时,拼接入startRownum和endRownum,用于获取分页数据;

以下是Oracle分页demo:

select from (select t.,rownum rn from (select from 表 where 条件 order by 字段 )t)a where a.rn>=搜索开始行 and a.rn<= 搜索结束行

末了处理resultSet结果集,关闭connection。

Mybatis分页简介(方言为mysql时):

mybatis供应了RowBounds分页,

return userDao.queryObjectByPage(name, new RowBounds(start, limit));

这种分页不适宜大量数据存在的情形。
而实际事情中,每每数据量比较大,最实用分页的实现办法还是利用拦截器实现,支持根据不同数据库配置不同分页sql的方言。

拦截器实现大略单纯分页核心代码如下:

口试拓展:

昨日回顾

1.mybatis 如何防止SQL注入。

#号的入参时候,mybatis在拼接sql后,会进行预编译。
不会直接用入参工具的值直接更换,而是将待更换的值先用?(问号)代替,实行时,直策应用编译好的SQL,更换占位符“?”就可以了。
这样就很好避免了sql注入的风险。

$号入参会有sql注入风险。

今日问题

1.谈谈返回映命中resultMap和resultType差异。

-------------

写的不好,如果大家有更高的见地欢迎评论。