mybatis 分页_重学Mybatis(五)-------分页 (含面试题)

博主将会针对Java面试题写一组文章,包括J2ee,SQL,主流Web框架,中间件等面试过程中面试官经常问的问题,欢迎大家关注。一起学习,一起成长,文章底部有面试题。

26017bbe2bb1ccffb06cf6460b4080e4.png

分页:

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

a8f13435bd0662b5a9659c5a136d135c.png

古典JDCB实现分页

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

select count(1) from 表 where 条件;

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

再拼接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。

77aed8914f5428a498cea4b7e299c11c.png

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

mybatis提供了RowBounds分页,

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

这种分页不适合大量数据存在的情况。而实际工作中,往往数据量比较大,最实用分页的实现方式还是运用拦截器实现,支持根据不同数据库配置不同分页sql的方言。

拦截器实现简易分页核心代码如下:

a3dfd27b1dc07950b8c71786ff448613.png

面试拓展:

昨日回顾

1.mybatis 如何防止SQL注入。

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

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

今日问题

1.谈谈返回映射中resultMap和resultType区别。

6d9760a4b671f7ef63006b65f640e2a0.png

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值