(一)增加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.jar,jsqlparser-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的分页,这几次练习下来都没有遇到什么棘手的问题,做起来还是比较有信心的。但是内容有点多,需要进一步的消化,教材上的练习暂时还没有完成,明天练习看看这几天的学习效果如何。