Mybatis分頁插件


Mybatis分頁

1,使用普通方式分頁:

  1. 在映射文件中設置分頁語句和設置總條數語句:

    <select id="getByPage" resultType="User">
    	SELECT * FROM `user` LIMIT #{start},#{pageSize}
    </select>
    <select id="count" resultType="java.lang.Integer">
    	SELECT COUNT(1) FROM `user`
    </select>
    
  2. 在接口中定義:

    List<User> getByPage(@Param("start")Integer start,@Param("pageSize")Integer pageSize);
    Integer count();
    
  3. 業務層:

    int start = (curPage-1)*pageSize;
    List<User> list = session.getMapper(UserMapper.class).getByPage(start,pageSize);
    

2,基於PageHelper實現分頁:

  1. 導入jar包:

    1.pagehelper-4.1.6.jar:分頁插件
    2.jsqlparser-0.9.5.jarpageHelper的依賴包

  2. mybatis-config.xml中配置分頁插件:

    <plugins>
    	<plugin interceptor="com.github.pagehelper.PageHelper">
    		<property name="dialect" value="mysql"/>
    	</plugin>
    </plugins>
    
  3. mapperservice層都做查詢所有處理:

    1.mapper中的SQL語句后面不能添加“;”,否則報錯
    2.不需要寫分頁SQL語句,因為插件會自動加上limit ?,?

  4. servlet:

    int curPage = 1;
    int pageSize = 5;
    String number = request.getParameter("number");
    if(number!=null){
    	curPage = Integer.parseInt(number);
    }	
    PageHelper.startPage(curPage,pageSize); //設置分頁參數 PageHelper.startPage(當前頁,每頁顯示條數)
    List<User> list = us.findAll();
    PageInfo<User> pageInfo = new PageInfo<User>(list); //把當前頁的list 封裝成了 pageInfo
    request.setAttribute("pageInfo", pageInfo);
    request.getRequestDispatcher("showByChaJian.jsp").forward(request, response);
    
  5. 頁面使用:

    <c:forEach var="u" items="${pageInfo.list }">
    	${u.userId }
    </c:forEach>
    第${pageInfo.pageNum }頁|共${pageInfo.pages }頁|共${pageInfo.total }條數據
    <c:choose>
    	<c:when test="${pageInfo.pageNum==1 }">
    		首頁 上一頁
    	</c:when>
    	<c:otherwise>
    		<a href="user?method=showByChaJian&number=1">首頁</a>
    		<a href="user?method=showByChaJian&number=${pageInfo.pageNum-1 }">上一頁</a>
    	</c:otherwise>
    </c:choose>    	
    <c:choose>
    	<c:when test="${pageInfo.pageNum==pageInfo.pages }">
    		下一個  尾頁
    	</c:when>
    	<c:otherwise>
    		<a href="user?method=showByChaJian&number=${pageInfo.pageNum+1 }">下一頁</a>
    		<a href="user?method=showByChaJian&number=${pageInfo.lastPage }">尾頁</a>
    	</c:otherwise>
    </c:choose>
    

3、mybatis中的緩存機制:

  1. 作用:把數據庫的數據放在內存中,直接從內存中取出數據,提高讀取效率。
  2. mybatis中的緩存
    1、一級緩存:默認打開
    使用范圍:session范圍。
    2、二級緩存:默認不打開。替代技術:redis。
    使用范圍:sessionFactory
    開啟二級緩存的步驟:
    1、在mybatis-config.xml中添加:<setting name="cacheEnabled" value="true"/>
    2、在mapper映射文件中開啟二級緩存:<cache/>
    3、在某個sql語句的標簽上設置:useCache="true"
    4、實體類做序列化處理:public class User implements Serializable{}
  3. 執行流程:
    遇到某個查詢方法,先去查詢二級緩存。若二級緩存中有結果對象,則直接取出使用。若沒有該對象,則去查詢一級緩存,若一級緩存中有該sql語句,則直接取出使用。若一級緩存中沒有該sql語句,則會從數據庫查詢,返回結果。再把結果放入到一級緩存中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM