关于Mybatis那些事
关于Mybatis PageHelper,是物理分页,支持多种分页方式
关于分页,一般来说有逻辑分页和物理分页,逻辑分页就是数据库返回所有结果,根据代码进行分页;而物理分页就是依赖数据库进行分页,打个比方使用limit,数据库返回分页的结果
关于PageHelper的使用,官方推出了好多方法pagehelper文档
在这里为了以后查询方便,就记录最常用的方法
第一种:RowBounds方式的调用,这种方式侵入性最小,在配置中,有两个参数是针对RowBounds的
rowBoundsWithCount:分页插件对RowBounds的支持默认和MyBatis是一样的,默认情况下不对count进行查询,如果想在分页查询中进行count查询以及使用PageInfo类,要将这个参数设置为true
offsetAsPageNum:如果觉的RowBounds中的两个参数offset与limit不如pageNum与pageSize容易理解,可以将此参数设置为true
List<Country> selectAll(RowBounds rowBounds);
第二种,也就是我经常用的一种,PageHelper.startPage静态方法的调用,不过要技术一点,就是紧跟在这个方法后的第一个MyBatis 查询方法会被进行分页。
PageHelper.startPage(Integer.parseInt(pageConf.get("currentPage").toString()),Integer.parseInt(pageConf.get("pagesize").toString()));
List<Blog> blogs = blogService.getBlogs(id);
PageInfo<Blog> blogInfo = new PageInfo<>(blogs);
list.put("blogList",blogs);
list.put("total",blogInfo.getTotal());
第三种,使用参数
需要配置supportMethodArguments为true,同时要配置params参数
List<Country> selectByPageNumSize(
@Param("user") User user,
@Param("pageNumKey") int pageNum,
@Param("pageSizeKey") int pageSize);
如果User中同时有pageNumKey与pageSizeKey参数,就可以使用
List<Country> selectByPageNumSize(User user);
当时用 Mybatis 的xml的时候,有时候我们会进行条件的比较 当时用 大于,小于或大于等于 小于等于的时候
最好不要使用数学比较符号,使用xnl能解析的语言,或者MyBatis为我们准备的格式
<if test="startDate !=null and startDate !=''">
AND blogDate >= #{startDate} // >= xml格式 < 就是 <
</if>
<if test="endDate !=null and endDate !=''">
AND blogDate <![CDATA[ <= ]]> #{endDate} //<![CDATA[ ]]> MyBatis为我们准备的
</if>
下一篇: 国家统计局爬2020年省市县乡村数据