mybatis-paginator+mysql 簡單案例
阿新 • • 發佈:2019-01-23
接手一箇舊專案,裡面的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>
- 輸出效果