欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于Mybatis那些事

程序员文章站 2022-05-04 18:57:25
...

关于Mybatis PageHelper,是物理分页,支持多种分页方式

关于分页,一般来说有逻辑分页和物理分页,逻辑分页就是数据库返回所有结果,根据代码进行分页;而物理分页就是依赖数据库进行分页,打个比方使用limit,数据库返回分页的结果

Mybatis-PageHelper 的github

关于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 &gt;= #{startDate} // >= xml格式 &lt; 就是 <
 </if>
<if test="endDate !=null and endDate !=''">
            AND blogDate <![CDATA[ <= ]]> #{endDate} //<![CDATA[  ]]>  MyBatis为我们准备的
</if>