Mybatis的分页插件PageHelper使用及注意事项

(一)PageHelper分页插件介绍

*笔者采用spring+springMVC+mybatis框架做java后台开发,开发软件是IntellijIDEA(用过之后已卸掉eclipse),项目为maven工程。

使用方法

(在已有ssm框架基础上)

1.mybatis的配置文件中添加代码:

  <plugins>
    <!-- com.github.pagehelper为PageHelper类所在包名 -->
    <plugin interceptor="com.github.pagehelper.PageHelper">
        <property name="dialect" value="mysql"/>
        <!-- 该参数默认为false -->
        <!-- 设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 -->
        <!-- 和startPage中的pageNum效果一样-->
        <property name="offsetAsPageNum" value="true"/>
        <!-- 该参数默认为false -->
        <!-- 设置为true时,使用RowBounds分页会进行count查询 -->
        <property name="rowBoundsWithCount" value="true"/>
    </plugin>
</plugins>

2.maven工程添加dependency自动下载jar包,将以下代码添加到pom.xml

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

3.配置完成,等下完jar包就可以用了。。哈哈哈哈哈哈

3.1 controller
    @ResponseBody
    @RequestMapping(value = "selectPositionWithCondition.do")
    public AjaxResultPo deleteDepart(PositionManagerPO positionManagerPO){
        PageInfo<PositionManagerVO> pageInfo = positionService.getMessagesByCondition(positionManagerPO);
        return new AjaxResultPo(true,pageInfo);
    }

*需要引 import com.github.pagehelper.PageInfo;
这里的重点就是controller调用service实现类的getMessagesByCondition方法,返回一个以PageInfo包装的一个list,(实际从数据库中查出的是list<>)

3.2 Service实现类
 @Autowired
    private PositionManagerMapper mapper;

    public PageInfo<PositionManagerVO> getMessagesByCondition(PositionManagerPO positionManagerPO) {
        PageHelper.startPage(1,10);//这句是重点,利用分页插件将接下来的一条查询的sql限定在第一页,查10条数据
        List<PositionManagerVO> list = mapper.selectPosition1(positionManagerPO);//调用mapper层执行查询
        PageInfo<PositionManagerVO> page = new PageInfo<PositionManagerVO>(list);//包装到PageInfo,传给controller
        //测试PageInfo全部属性,PageInfo的强大之处,它携带以下信息
        System.out.println("PageNum: "+page.getPageNum()); //2  第几页
        System.out.println("PageSize: "+page.getPageSize()); //3  每页包含的条数
        System.out.println("StartRow: "+page.getStartRow()); //4  显示的页面的第一条的
        System.out.println("EndRow: "+page.getEndRow());  //6   显示的页面的最后一条的
        System.out.println("Total: "+page.getTotal());  //8   总记录数
        System.out.println("Pages: "+page.getPages());  //3   总页数
        System.out.println("FirstPage: "+page.getFirstPage());  //1  第一页
        System.out.println("LastPage: "+page.getLastPage());   //3  最后一页
        System.out.println("isHasPreviousPage: "+page.isHasPreviousPage());
        System.out.println("isHasNextPage: "+page.isHasNextPage());
        return page;
    }
3.3 mapper
@Component
public interface PositionManagerMapper {
    public List<PositionManagerVO> selectPosition1(PositionManagerPO positionManagerPO);
}

mapper中什么都没有。。。

3.4 mapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.channelsoft.dao.PositionManagerMapper">

    <select id="selectPosition1" resultType="java.util.ArrayList" parameterType="com.channelsoft.model.PositionManagerPO" resultMap="PositionResultMap">
        select * from t_position_manager

    </select>
</mapper>

同样简单粗暴的查询

接下来是本文的重点。。

(二)注意事项

1. pageHelper只支持使用后的下一条查询语句,而且是用limit ?,? 实现的
2.pageHelper与注解形式的@SelectProvider不兼容,需使用xml文件写动态sql语句
3.maven工程默认不编译.xml文件,在工程的target文件夹下看不到对应的.xml,需要在pom.xml的build标签里添加以下内容:

    <resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.xml</include>
        </includes>
        <filtering>true</filtering>
      </resource>
    </resources>

欢迎:转载,评论,提问

猜你喜欢

转载自blog.csdn.net/PitBXu/article/details/78772647