Mybatis + SpringMVC + Maven实现分页查询

使用Mybatis + Maven + SpringMVC 运行时,突然被需要分页查询的功能给难住了

 

这里推荐采用的插件是PageHelper这个插件,使用起来十分方便。该插件支持以下数据库:

Oracle
Mysql
MariaDB
SQLite
Hsqldb
PostgreSQL
DB2
SqlServer(2005+)
Informix
H2

 

对应于github的项目地址: 

https://github.com/pagehelper/Mybatis-PageHelper

关于使用建议猿友们可以详细阅读下这里的介绍: 

http://git.oschina.net/free/Mybatis_PageHelper/blob/master/wikis/HowToUse.markdown

 

PageHelper的使用方法

1、引入依赖

在pom.xml文件添加如下依赖:

<!-- mybatis分页插件依赖 -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>4.0.0</version>
</dependency>

  

3.2、在Mybatis配置xml中配置拦截器插件

在mybatis-config.xml文件中添加插件后的内容如下:

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  
"http://mybatis.org/dtd/mybatis-3-config.dtd">  
<configuration>    
<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"/>
        <!-- 设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果 -->
        <!-- (相当于没有执行分页查询,但是返回结果仍然是Page类型)-->
        <property name="pageSizeZero" value="true"/>
        <!-- 3.3.0版本可用 - 分页参数合理化,默认false禁用 -->
        <!-- 启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页 -->
        <!-- 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据 -->
        <property name="reasonable" value="false"/>
        <!-- 3.5.0版本可用 - 为了支持startPage(Object params)方法 -->
        <!-- 增加了一个`params`参数来配置参数映射,用于从Map或ServletRequest中取值 -->
        <!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值 -->
        <!-- 不理解该含义的前提下,不要随便复制该配置 -->
        <property name="params" value="pageNum=start;pageSize=limit;"/>
        <!-- always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page -->
        <property name="returnPageInfo" value="check"/>
    </plugin>
</plugins>
</configuration>

  

哦,顺便提一下,SpringMVC 的配置文件

 <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->  
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
        <property name="dataSource" ref="dataSource" />  
        <!-- 自动扫描mapping.xml文件 -->  
        <property name="mapperLocations" value="classpath:org/hr/integrity/mapping/*.xml"></property> 
        <property name="configLocation" value="classpath:/mybatis-config.xml"></property> 
    </bean>

  

3.3、mapper文件添加sql

在userMapper.xml文件里面添加sql:

<resultMap id="BaseResultMap" type="org.hr.integrity.bean.Users" >
    <id column="user_id" property="userId" jdbcType="INTEGER" />
    <result column="user_name" property="userName" jdbcType="VARCHAR" />
    <result column="enterprise_name" property="enterpriseName" jdbcType="VARCHAR" />
    <result column="enterprise_email" property="enterpriseEmail" jdbcType="VARCHAR" />
    <result column="passwords" property="passwords" jdbcType="VARCHAR" />
    <result column="tel" property="tel" jdbcType="VARCHAR" />
    <result column="isapproval" property="isapproval" jdbcType="INTEGER" />
  </resultMap>
  <sql id="Base_Column_List" >
    user_id, user_name, enterprise_name, enterprise_email, passwords, tel, isapproval
  </sql>
  <select id="selectUsersByIsapproval" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
    select 
    <include refid="Base_Column_List" />
    from users
    where isapproval = #{isapproval}
  </select>

  

 

3.4、dao添加对用方法

UserDao.java添加如下方法:

List<Users> selectUsersByIsapproval(Integer isapproval);

  

3.5、service添加分页查询方法

UserService.java文件添加方法

  public PageInfo<Users> selectUsersByIsaByPage(Integer isapproval,Integer pageNo,Integer pageSize)
    {
        pageNo = pageNo == null?1:pageNo;
        pageSize = pageSize == null?10:pageSize;
        PageHelper.startPage(pageNo, pageSize);
        List<Users> list = userDao.selectUsersByIsapproval(isapproval);
        //用PageInfo对结果进行包装
        PageInfo<Users> page = new PageInfo<Users>(list);
        //测试PageInfo全部属性
        System.out.println(page.toString());
        return page;
    }

  

 

至于 Mybatis + Maven + SpringMVC 的框架怎么搭建,呵呵,这里不告诉你!

 

其他博客:http://blog.csdn.net/u013142781/article/details/50410243

原文地址:http://bbs.landingbj.com/t-0-298931-1.html

 

posted @ 2016-08-23 11:39  panie2015  阅读(1158)  评论(0编辑  收藏  举报