Mybatis第三次练习——分页

一、MYBATIS系列教材 (二十)- 相关概念 - 分页

(一)增加100条catgory数据

为了观察分页查询的效果,把分类表里的数据都删除掉,然后新增100个数据

package com.how2java;
    
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
 
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 
import com.how2java.pojo.Category;
    
public class TestMybatis {
    
    public static void main(String[] args) throws IOException {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession session = sqlSessionFactory.openSession();
        List<Category> cs = session.selectList("listCategory");
        for (Category c : cs) {
            session.delete("deleteCategory", c);
        }
        for (int i = 0; i < 100; i++) {
            Category c = new Category();
            c.setName("category name " + i);
            session.insert("addCategory", c);
        }
        List<Category> cs2 = session.selectList("listCategory");
        for (Category c : cs2) {
            System.out.println(c.getName());
        }
 
        session.commit();
        session.close();
 
    }
}

 (二)修改Category.xml

在这一步新增limit

关键代码段:

<if test="start!=null and count!=null">
    limit #{start},#{count}
</if>

 

 (三)注解方式

注:start是指从第0个开始,如果是第二页,那么就是第5个开始。
       count参数是指每页有5条数据

CategoryMapper.java

package com.how2java.mapper;
  
import java.util.List;
 
import org.apache.ibatis.annotations.Many;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
 
import com.how2java.pojo.Category;
  
public interface CategoryMapper {
    @Select(" select * from category_ ")
    @Results({@Result(property = "products", javaType = List.class, column = "id", 
          many = @Many(select = "com.how2java.mapper.ProductMapper.listByCategory"))})      
    public List<Category> list();
     
    @Select(" select * from category_ limit #{start},#{count}")
    public List<Category> listByPage(@Param("start") int start, @Param("count")int count);
}

TestMybatis.java

package com.how2java.mapper;
  
import java.util.List;
 
import org.apache.ibatis.annotations.Many;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
 
import com.how2java.pojo.Category;
  
public interface CategoryMapper {
    @Select(" select * from category_ ")
    @Results({@Result(property = "products", javaType = List.class, column = "id", 
          many = @Many(select = "com.how2java.mapper.ProductMapper.listByCategory"))})      
    public List<Category> list();
     
    @Select(" select * from category_ limit #{start},#{count}")
    public List<Category> listByPage(@Param("start") int start, @Param("count")int count);
}

运行结果如下:

 

二、MYBATIS系列教材 (二十一)- 相关概念 - PAGEHELPER

PageHelper介绍:PageHelper是一款犀利的Mybatis分页插件,使用了这个插件之后,分页开发起来会更加简单容易。

(一)导入额外的jar包:pagehelper-5.1.0-beta2.jarjsqlparser-1.0.jar

(二)数据设置为100条

为了观察分页查询的效果,把分类表里的数据都删除掉,然后新增100个数据。

TestMybatis.java

package com.how2java;
    
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
 
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 
import com.how2java.pojo.Category;
    
public class TestMybatis {
    
    public static void main(String[] args) throws IOException {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession session = sqlSessionFactory.openSession();
        List<Category> cs = session.selectList("listCategory");
        for (Category c : cs) {
            session.delete("deleteCategory", c);
        }
        for (int i = 0; i < 100; i++) {
            Category c = new Category();
            c.setName("category name " + i);
            session.insert("addCategory", c);
        }
        List<Category> cs2 = session.selectList("listCategory");
        for (Category c : cs2) {
            System.out.println(c.getName());
        }
 
        session.commit();
        session.close();
 
    }
}

设置成功后:

(三)配置插件

关键代码,表示开启PageHelper插件

<plugins>
   <plugin interceptor="com.github.pagehelper.PageInterceptor">        
   </plugin>
</plugins>

(四)将limit注释掉

将下述代码注释掉,因为分页相关工作,会由PageHelper去做掉,不需要自己去写了

<!--                 <if test="start!=null and count!=null"> -->
<!--                     limit #{start},#{count} -->
<!--                 </if> -->

(五)分页查询

这一步只需要在执行查询所有的调用之前,执行一条语句即可:

PageHelper.offsetPage(0, 5);

这就表示查出第一页的数据,每页5条,

查询结果如下:

 (六)获取总数

通过PageInfo page= new PageInfo<>(cs);就可以获取分页信息,包括总数以及其他的。

获取结果如下:

 

总结:这一次主要练习了Mybatis的分页,这几次练习下来都没有遇到什么棘手的问题,做起来还是比较有信心的。但是内容有点多,需要进一步的消化,教材上的练习暂时还没有完成,明天练习看看这几天的学习效果如何。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值