公众号文章链接:
https://mp.weixin.qq.com/s/b2LDMMxcDIpRdKuLtUW3zg
目录
1 自定义一个分页对象
@Data
public class Page<T> implements Serializable {
private long startIndex = 1; //当前记录开始数
private int pageSize = 10; // 每页的记录数
private long totalCount; // 总记录数
private long totalPage; // 总页数
private List<T> data; // 当前页中存放的记录,类型一般为List
}
2 分页对象在mapper文件的映射
<resultMaptype="com.rangers.model.Page" id="PageResultMap">
<id column="startIndex" property="startIndex"/>
<id column="pageSize" property="pageSize"/>
<id column="totalCount" property="totalCount"/>
<id column="totalPage" property="totalPage"/>
<collection column="{startIndex=startIndex,pageSize=pageSize}"
property="data"
ofType="com.rangers.dao.model.WhiteBlack"
select="getPageData"/>
</resultMap>
3 分页方法
<select id="pagedQuery" parameterType="HashMap" resultMap="PageResultMap">
select
count(1) totalCount,
ceil( count(1)/ #{pageSize}) totalPage,
#{startIndex} startIndex,
#{pageSize} pageSize
from tb_user_behavior
where 1=1
</select>
4 映射PageResultMap#getPageData
<selectid="getPageData" resultMap="BaseResultMap" parameterType="HashMap" >
select
<include refid="Base_Column_List" />
from tb_user_behavior where 1=1
ORDER BY create_time DESC
limit #{startIndex}, #{pageSize}
</select>
5 执行日志
1、先执行 pagedQuery方法 => PageResultMap=>data属性
2、再执行 getPageData方法
..|DEBUG|org.mybatis.spring.SqlSessionUtils|Creating a new SqlSession
..|DEBUG|org.mybatis.spring.SqlSessionUtils|SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@68f807bc] was not registered for synchronization because synchronization is not active
..|DEBUG|org.mybatis.spring.transaction.SpringManagedTransaction|JDBC Connection [HikariProxyConnection@1357777703 wrapping com.mysql.jdbc.JDBC4Connection@63e781ae] will not be managed by Spring
..|DEBUG|com.rangers.mapper.PageDemoMapper.pagedQuery|==> Preparing: select count(1) totalCount, ceil(count(1)/?) totalPage, ? startIndex, ? pageSize from tb_user_behavior where 1=1 *|DEBUG|com.rangers.mapper.PageDemoMapper.pagedQuery|==> Parameters: 10(String), 1(String), 10(String)
..|DEBUG|com.rangers.mapper.PageDemoMapper.getPageData|====> Preparing: select id, name, code, create_time, update_time, expire_time from tb_user_behavior where 1=1 ORDER BY create_time DESC limit ?, ?
..|DEBUG|com.rangers.mapper.PageDemoMapper.getPageData|====> Parameters: 1(String), 10(String)
..|DEBUG|com.rangers.mapper.PageDemoMapper.getPageData|<==== Total: 10
..|DEBUG|com.rangers.mapper.PageDemoMapper.pagedQuery|<== Total: 1
..|DEBUG|org.mybatis.spring.SqlSessionUtils|Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@68f807bc]