Springboot+PageHelper

其实就是给Mybaits做分页查询,在上一小节的集成之上加着分页我们的Demo才会显得更加的完善。

PageHelper的原理是基于拦截器实现的。

pageHelper会使用ThreadLocal获取到同一线程中的变量信息,各个线程之间的Threadlocal不会相互干扰,也就是Thread1中的ThreadLocal1之后获取到Tread1中的变量的信息,不会获取到Thread2中的信息所以在多线程环境下,各个Threadlocal之间相互隔离,可以实现,不同thread使用不同的数据源或不同的Thread中执行不同的SQL语句,所以,PageHelper利用这一点通过拦截器获取到同一线程中的预编译好的SQL语句之后将SQL语句包装成具有分页功能的SQL语句,并将其再次赋值给下一步操作,所以实际执行的SQL语句就是有了分页功能的SQL语句。

Maven的集成

        
        
            com.github.pagehelper
            pagehelper
            4.1.6
        

Java代码配置

@Configuration
public class MybatisConfig {
    @Bean
    public PageHelper pageHelper(){
        PageHelper pageHelper = new PageHelper();
        //添加配置,也可以指定文件路径
        Properties p = new Properties();
        p.setProperty("offsetAsPageNum", "true");
        p.setProperty("rowBoundsWithCount", "true");
        
        
        
        p.setProperty("reasonable", "true");
        pageHelper.setProperties(p);
        return pageHelper;
    }
}

那么集成只会是怎么使用的呢?

    /**
     *
     * 集成分页插件
     * @param page 当前页面
     * @param pageSize 每页的数量
     * @return
     */
    @RequestMapping("findUserMenuPageList")
    public Object findUserMenuPageList(@RequestParam(value = "page", required = false, defaultValue = "1") int page,
                                   @RequestParam(value = "pageSize", required = false, defaultValue = "2") int pageSize){

        PageHelper.startPage(page, pageSize);//设置分页参数
        List humorList = this.userService.findUserMenuList("李文涛");
        PageInfo pageInfo = new PageInfo<>(humorList);
        return pageInfo;
    }

这样子就很轻松的使用分页插件了,再也不用去用sql分页了,非常方便。

Demo下载地址: https://github.com/XiaoBuDianKeJi/Mars/tree/spring-cloud

你可能感兴趣的:(SpringBoot微服务架构)