mybatis分页查询插件

昨天发现一个超级好用的插件,简单记录下用法,当然也可以直接去看文档链接在这里分页查询插件使用 PageHelper 你只需要在 classpath 中包含 pagehelper-x.x.x.jar 和 jsqlparser-0.9.5.jar。

如果你使用 Maven,你只需要在 pom.xml 中添加下面的依赖:

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.0.1</version>
</dependency>

配置拦截器插件
在 MyBatis 配置 xml 中配置拦截器插件

<!-- 
    plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下:
    properties?, settings?, 
    typeAliases?, typeHandlers?, 
    objectFactory?,objectWrapperFactory?, 
    plugins?, 
    environments?, databaseIdProvider?, mappers?
-->
<plugins>
    <!-- com.github.pagehelper为PageHelper类所在包名 -->
    <plugin interceptor="com.github.pagehelper.PageInterceptor">
        <!-- 使用下面的方式配置参数,后面会有所有的参数介绍 -->
        <property name="param1" value="value1"/>
    </plugin>
</plugins>

或者
在 Spring 配置文件中配置拦截器插件

使用 spring 的属性配置方式,可以使用 plugins 属性像下面这样配置:

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <!-- 注意其他配置 -->
  <property name="plugins">
    <array>
      <bean class="com.github.pagehelper.PageInterceptor">
        <property name="properties">
          <!--使用下面的方式配置参数,一行配置一个 -->
          <value>
            **params=value1**
          </value>
        </property>
      </bean>
    </array>
  </property>
</bean>

其中属性配置需要根据自己的使用场景配置,配置好就可以在程序用使用了
controller中的method

 /*前台获取foods列表,而且实现分页*/
    @RequestMapping(value = "/selectByPageNumSize",method = RequestMethod.GET)
    public String getList(Model model,
                                @RequestParam(required = false, defaultValue = "1") int page,
                                @RequestParam(required = false, defaultValue = "6") int rows) {
        int pageNum;
        Integer total=foodService.selectTotalFood();
        if(total%rows!=0){
            pageNum=total/rows+1;
        }else{
            pageNum=total/rows;
        }
        List<Food> foods = foodService.selectByFood( page, rows);
        model.addAttribute("foods",foods);
        model.addAttribute("page", page);
        model.addAttribute("rows", rows);
        model.addAttribute("total",total);
        model.addAttribute("pageNum",pageNum);
        return  "forward:../before/detail/caidan.jsp";
    }

Service中对selectByFood的实现

   public List<Food> selectByFood(int page, int rows) {

        //分页查询 只需要在要执行分页查询的sql语句前执行即可实现分页查询
        PageHelper.startPage(page, rows);
        return foodMapper.listAllFoods();
    }

page是1 pageSize默认是6

DEBUG [http-apr-8080-exec-8] - ==>  Preparing: select * from food ,foodtype where food.foodType_id=foodtype.id LIMIT 6 
DEBUG [http-apr-8080-exec-8] - ==> Parameters: 
DEBUG [http-apr-8080-exec-8] - <==      Total: 6

page是2 pageSize默认是6

DEBUG [http-apr-8080-exec-9] - ==>  Preparing: select * from food ,foodtype where food.foodType_id=foodtype.id LIMIT 6,6 
DEBUG [http-apr-8080-exec-9] - ==> Parameters: 
DEBUG [http-apr-8080-exec-9] - <==      Total: 6

这里用的mysql数据库,当然啦这个插件还支持的数据库文档中可以看到,是不是超好用?!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值