• 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

  • 相关阅读:
    网站如何做分布式(集群)的大纲
    [转]Bind和Eval的区别详解
    SQL 中游标的并发问题。
    如何利用客户端缓存对网站进行优化?
    Windows的第五种群集方案 CCS
    ICollection 接口的类序列化的问题。
    如何提高网页的效率(上篇)——提高网页效率的14条准则
    石油地质名称解释
    【SQL基础概念】
    DataView/DataRowView
  • 原文地址:https://www.cnblogs.com/panie2015/p/5798644.html
Copyright © 2020-2023  润新知