4:关于分页PageHelper的思考

本文深入探讨了三种不同的分页技术,包括MVC模式下的分页、SSR项目中的分页以及淘淘商城采用的PageHelper插件分页。详细解析了各自的实现原理和应用场景,对比了它们之间的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在写淘淘商城的时候,淘淘商城介绍了一种全新的分页写法,我想到了到现在为止,我看到过三种分页方式,所以写一写,将我看到的分页方式原理总结一下,或许其中存在极大的耦合性:

一:mvc模式下的分页

  mvc中使用一个写好的PageModel去装载,model中记录了当前页,上/下一页,总页数等参数,并且用一定的算法,使得只需要输入当前页和总页数,就能得到所有的数据,最后,在DBHelper的方法中传入PageModel参数,在sql语句中用limit限制,实现分页

 

二:ssr项目中的分页

   实习中遇到的ssr项目,从action中开始,传入pageInfo这个实体类,类似于mvc模式下的分页,在到层的xxxDaoImp中,将参数pageInfo作为param传入到sql中

举例:    public List<AdminPojo> getAdminPojoListByPage(AdminQuery adminQuery,
            PageInfo pageInfo) {
        Hashtable<String, Object> param = new Hashtable<String, Object>();
        if (pageInfo != null && pageInfo.getSkip() != null) {
            param.put("skip", pageInfo.getSkip());
        }
        if (pageInfo != null && pageInfo.getPageSize() != null) {
            param.put("pageSize", pageInfo.getPageSize());
        }
        return this.smcTemplate.queryForList(
                "sqlmap_admin_lz_cc.getAdminPojoListByPage", param);
    }

 

三:淘淘商城的分页

淘淘商城的分页写法是,导入了gitHub官网的pageHelper插件(在MyBatis的xml配置文件中添加plugins),这个插件的原理是实现了MyBatis的interceptor接口,扩展了MyBatis的功能。这样就可以在插件中获得sql语句,为sql语句添加限制条件

测试类如下:

public class TestPageHelper {

@Test

public void testPageHelper() {

//创建一个spring容器

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-*.xml");

//从spring容器中获得Mapper的代理对象

TbItemMapper mapper = applicationContext.getBean(TbItemMapper.class);

//执行查询,并分页

TbItemExample example = new TbItemExample();

//分页处理

PageHelper.startPage(2, 10);

List<TbItem> list = mapper.selectByExample(example);

//取商品列表

for (TbItem tbItem : list) {

System.out.println(tbItem.getTitle());

}

//取分页信息

PageInfo<TbItem> pageInfo = new PageInfo<>(list);

long total = pageInfo.getTotal();

System.out.println("共有商品:"+ total);}

}

 

但是视频教学中说到,分页插件对逆向工程生成的代码支持不好,不能对有查询条件的查询分页。会抛异常。

所以需要使用它修改过的版本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值