Mybatis Paginator分頁

mybatis-paginator是gethub上的一個開源項目、用於java後臺獲取分頁數據、該開源項目還提供一個列表組件(mmgrid)用於前端展現。
html

該開源項目地址:https://github.com/miemiedev 前端

參考博客:http://blog.csdn.net/szwangdf/article/details/27859847java

一、maven添加依賴

<dependencies>
  ...
    <dependency>
        <groupId>com.github.miemiedev</groupId>
        <artifactId>mybatis-paginator</artifactId>
        <version>1.2.10</version>
    </dependency>
  ...
</dependencies>


二、mybatis-config.xml配置插件

<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPE configuration  PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"  "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
<configuration>
    <plugins>
        <plugin interceptor="com.github.miemiedev.mybatis.paginator.OffsetLimitInterceptor">
            <propertyname="dialectClass"value="com.github.miemiedev.mybatis.paginator.dialect.OracleDialect"/>
        </plugin>
     </plugins>
</configuration>


三、spring mvc傳遞分頁的數據

3.一、使用Json

須要配置spring-mvc.xml
git

<mvc:annotation-driven>
    <mvc:message-converters register-defaults="true">
        <bean class="org.springframework.http.converter.StringHttpMessageConverter">
            <constructor-argvalue="UTF-8"/>        
        </bean>
 
        <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
             <property name="objectMapper">
                 <bean class="com.github.miemiedev.mybatis.paginator.jackson2.PageListJsonMapper"/>
             </property>
             <property name="supportedMediaTypes">
                <list>
                    <value>text/html;charset=UTF-8</value>
                </list>
            </property>
         </bean>
     </mvc:message-converters>
 </mvc:annotation-driven>


controller傳遞方式github

(利用@ResponseBody註解傳遞Json數據,須要添加相關jar包:jackson-core-asl.jar和jackson-mapper-asl.jar)spring

@ResponseBody
@RequestMapping(value ="/findByCity")
public List findByCity(@RequestParam String city,
                 @RequestParam(required =false,defaultValue ="1") intpage,
                 @RequestParam(required =false,defaultValue ="30") intlimit,
                 @RequestParam(required =false) String sort,
                 @RequestParam(required =false) String dir) {
 
    return userService.findByCity(city, newPageBounds(page, limit, Order.create(sort,dir)));
}


序列化後的Json字符串apache

{
    "items":[
        {"NAME":"xiaoma","AGE":30,"GENDER":1,"ID":3,"CITY":"BeiJing"},
        {"NAME":"xiaoli","AGE":30,"SCORE":85,"GENDER":1,"ID":1,"CITY":"BeiJing"},
        {"NAME":"xiaowang","AGE":30,"SCORE":92,"GENDER":0,"ID":2,"CITY":"BeiJing"},
        {"NAME":"xiaoshao","AGE":30,"SCORE":99,"GENDER":0,"ID":4,"CITY":"BeiJing"}
    ],

    "slider": [1, 2, 3, 4, 5, 6, 7],
    "hasPrePage":false,
    "startRow": 1,
    "offset": 0,
    "lastPage":false,
    "prePage": 1,
    "hasNextPage":true,
    "nextPage": 2,
    "endRow": 30,
    "totalCount": 40351,
    "firstPage":true,
    "totalPages": 1346,
    "limit": 30,
    "page": 1
}


3.二、在spring mvc的jsp中用JSTL取分頁數據的值

spring-mvc.xml配置
json

<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/**"/>
        <bean class="com.github.miemiedev.mybatis.paginator.springmvc.PageListAttrHandlerInterceptor"/>
    </mvc:interceptor>
</mvc:interceptors>


controller方法傳值方式spring-mvc

@RequestMapping(value ="/userView")
public ModelAndView userView(@RequestParam String city,
                 @RequestParam(required =false,defaultValue ="1")int page,
                 @RequestParam(required =false,defaultValue ="30")int limit,
                 @RequestParam(required =false) String sort,
                 @RequestParam(required =false) String dir) {
    List users = userService.findByCity(city,newPageBounds(page, limit, Order.create(sort,dir)));
    return newModelAndView("account/user","users", users);
}


jsp取值(攔截器會將PageList分拆添加Paginator屬性,默認命名規則爲"原屬性名稱"+"Paginator")mybatis

<table>
    <c:forEach items="${users}"var="user">
        <tr>
            <td>${user['ID']}</td>
            <td>${user['NAME']}</td>
            <td>${user['AGE']}</td>
        </tr>
    </c:forEach>
</table>

上一頁: ${usersPaginator.prePage} 
當前頁: ${usersPaginator.page} 
下一頁: ${usersPaginator.nextPage} 
總頁數: ${usersPaginator.totalPages} 
總條數: ${usersPaginator.totalCount} 


更多屬性參考Paginator類提供的方法
相關文章
相關標籤/搜索