mybatis分頁(yè)的3種方式是:1、使用Limit分頁(yè),其核心語(yǔ)句如“select * from users limit startIndex,pageSize;”;2、使用RowBounds實(shí)現(xiàn)分頁(yè),語(yǔ)句如“List
getUserLRowBounds();”;3、使用分頁(yè)插件“PageHelper”實(shí)現(xiàn)即可。
本教程操作環(huán)境:Windows10系統(tǒng)、Dell G3電腦。
mybatis分頁(yè)的幾種方式是什么?
為什么要分頁(yè)?
如果前端需要展示數(shù)據(jù)時(shí),由于數(shù)據(jù)量龐大,一次性展示,這時(shí)頁(yè)面將會(huì)出現(xiàn)一大片數(shù)據(jù),而且還不一定加載完成,效率很差,此時(shí)分頁(yè)查詢就可以很好的解決這一問(wèn)題,將龐大的數(shù)據(jù)按照一定數(shù)目顯示出,還可以通過(guò)點(diǎn)擊下一頁(yè)或者上一頁(yè)展示其它數(shù)據(jù),效率更高!
下面來(lái)介紹下mybatis常用的幾種分頁(yè)查詢!
首先看一下數(shù)據(jù)庫(kù)里所有的數(shù)據(jù),細(xì)節(jié)代碼里有注解
1、使用Limit分頁(yè)
sql使用的核心語(yǔ)句
-- 語(yǔ)法:表示從startIndex下標(biāo)開(kāi)始,一頁(yè)顯示pageSize個(gè) select * from users limit startIndex,pageSize; -- 語(yǔ)法:表示顯示[0,n]范圍的數(shù)據(jù) select * from users limit n;
使用Mybatis實(shí)現(xiàn)分頁(yè),基于sql實(shí)現(xiàn)
編寫接口
//分頁(yè)查詢 List<User> getUserLImit(Map<String,Object> map);
編寫Mapper.xml
<!-- 分頁(yè)查詢--> <select id="getUserLImit" parameterType="map" resultType="pojo.User"> select * from firend_mq.users limit #{startIndex},#{pageSize} </select>
測(cè)試類
//測(cè)試分頁(yè)查詢 @Test public void getUserLImit(){ SqlSession sqlSession = Mybatisutil.getSqlSession(); UserDao mapper = sqlSession.getMapper(UserDao.class); Map<String, Object> map = new HashMap<>(); map.put("startIndex",0); map.put("pageSize",3); List<User> userLImit = mapper.getUserLImit(map); for (User user : userLImit) { System.out.println(user); } sqlSession.close(); }
查詢結(jié)果:
2、RowBounds實(shí)現(xiàn)分頁(yè)
基于RowBounds類對(duì)象實(shí)現(xiàn),基于java代碼
編寫接口
//RowBounds實(shí)現(xiàn)分頁(yè)查詢 List<User> getUserLRowBounds();
編寫Mapper.xml,查詢的其實(shí)是全部用戶
<!-- RowBounds 分頁(yè)查詢--> <select id="getUserLRowBounds" resultType="pojo.User"> select * from firend_mq.users </select>
測(cè)試類
//RowBounds分頁(yè)查詢 @Test public void getUserLRowBounds(){ SqlSession sqlSession = Mybatisutil.getSqlSession(); //RowBounds對(duì)象 參數(shù)(起點(diǎn),個(gè)數(shù)) RowBounds rowBounds = new RowBounds(2, 3); //通過(guò)java代碼層面實(shí)現(xiàn)分頁(yè),第一個(gè)參數(shù)是接口類的方法路徑 List<User> userlist = sqlSession.selectList("dao.UserDao.getUserLRowBounds", null, rowBounds); for (User user : userlist) { System.out.println(user); } sqlSession.close(); }
結(jié)果:
3、使用分頁(yè)插件實(shí)現(xiàn)
感興趣的可以了解下,放個(gè)該插件的官網(wǎng)鏈接,有官方使用文檔,自行了解PageHelper分頁(yè)插件