1. 程式人生 > >mybatis-paginator+mysql 簡單案例

mybatis-paginator+mysql 簡單案例

接手一箇舊專案,裡面的mybatis使用了github上面的mybatis-paginator分頁外掛。看著舊程式碼摸不著頭腦,所以複製了網上的一個案例,沒想到一直跑不起來。down了原始碼才搞清楚,這裡記錄一下過程,備忘。

  • 如果要在介面使用jstl就要加攔截器,外掛會自動給我返回的xxx物件上加Paginator一併返回來,eg:“上一頁: ${xxxPaginator.prePage}”

springmvc.xml

<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/**"/>
        <bean class="com.github.miemiedev.mybatis.paginator.springmvc.PageListAttrHandlerInterceptor"/>
    </mvc:interceptor>
</mvc:interceptors>
  • dialect類包括了oracle,mysql,DB資料庫,mybatis-config.xml引入的時候要注意,這裡搞了半天,我說為什麼我mysql的sql語句一直是oracle的rownum……

mybatis-config.xml

<configuration>
    <plugins>
        <plugin interceptor="com.github.miemiedev.mybatis.paginator.OffsetLimitInterceptor">
            <property name="dialectClass" value="com.github.miemiedev.mybatis.paginator.dialect.MySQLDialect"/>
        </plugin>
    </plugins>
</configuration>
  • controller層

生成PageBounds 物件,構造方法很多,new物件的時候看看就知道了,很通俗易懂
呼叫Dao的sql方法的時候把PageBounds也傳過去即可

eg:PageList繼承了ArrayList,所以可以強轉,裡面包含了一個Paginator物件,有各種各樣的屬性,jsp頁面取得時候按屬性取即可。

@RequestMapping(value = "userPage",method = RequestMethod.GET)  
public ModelAndView userPage(Integer page, Integer limit){  
    PageBounds pb = new PageBounds(page,limit);  
    List list = userMapper.userList(pb);  
    PageList pageList = (PageList)list;  
    return new ModelAndView("userPage.jsp","users", pageList);  
}
  • Dao層 eg: xxx.selectList(“UserMapper.userList”,params,pageBounds);

params是自己的引數,pageBounds是controller穿過來的分頁物件。如果不傳自己的引數把第二個params去掉的話一直沒有響應,這裡估計是專門設定成這樣的,所以給了一個空引數。

  • jsp 注意:key+Paginator是預設的返回方式,我傳回來的key是users,外掛就預設usersPaginator作為分頁物件的key了。

“` jsp

<body>
    <table>
        <c:forEach items="${users}" var="user">
            <tr>
                <td>${user.id}</td>
                <td>${user.user_name}</td>
                <td>${user.password}</td>
            </tr>
        </c:forEach>
    </table>
    上一頁: ${usersPaginator.prePage}
    當前頁: ${usersPaginator.page}
    下一頁: ${usersPaginator.nextPage}
    總頁數: ${usersPaginator.totalPages}
    總條數: ${usersPaginator.totalCount}
    更多屬性參考Paginator類提供的方法
</body>
  • 輸出效果