码迷,mamicode.com
首页 > 其他好文 > 详细

mybatis 分页

时间:2020-06-21 23:08:33      阅读:61      评论:0      收藏:0      [点我收藏+]

标签:数据   内存   row   pre   自动   string   分页   code   class   

 

mybatis分页

 

1. 物理分页

  查询 从offset条起,后面的共rows条记录(offset从0开始)

SELECT * FROM table1 LIMIT offset,rows  

 

2. 逻辑分页

  RowBounds分页:一次性查出很多记录,然后再这些数据中进行分页查询

 

  RowBounds查询数据:

    jdbc驱动中有 Fetch Size 参数,表示每次最多从数据库中查询多少条数据,如果超过了这个数,实际上jdbc自动去再执行了查询。

    Mybatis实际上通过多次查询查询出所有数据,然后我们在RowBounds上进行分页查询

    如果数据很多,使用RowBounds查询所有数据会有内存溢出风险。所以RowBounds适合数据量不大的查询。

 

3. 使用RowBounds

  原来的接口:

public List<User> findUserByName(String name);

  对应的sql--mapper:

<mapper namespace="com.xt.dao.UserDao">
    <select id="findUserByName" resultType="com.xt.domain.User">
        select * from user where userName like concat(‘%‘,#{name},‘%‘)
    </select>
</mapper>

  使用:

UserDao dao = sqlSession.getMapper(UserDao.class);
List<User> list = dao.findUserByName("name1");

 

 

 

  使用RowBounds的接口:

public List<User> findUserByName(String name,RowBounds rowbounds);

  sql--mapper不变

 

  使用:

UserDao dao = sqlSession.getMapper(UserDao.class);
List<User> list = dao.findUserByName("name1",new RowBounds(0,5)); //查询 0,1,2,3,4

 

mybatis 分页

标签:数据   内存   row   pre   自动   string   分页   code   class   

原文地址:https://www.cnblogs.com/taoXiang/p/13174344.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!