SSM(十)MyBatis实现分页功能

本文介绍如何在MyBatis中实现用户列表的分页查询功能,包括修改UserMapper接口和XML文件,以及测试代码的编写。通过使用limit语句和动态SQL,实现了按创建时间降序排列的分页效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、需求说明:

为用户管理之查询用户列表功能增加分页实现

列表结果按照创建时间降序排列

二、分析

分页-DAO层实现:limit(起始位置,页面容量)

查询用户列表的方法增加2个参数:from,pageSize

首先完成总记录数的查询,根据页面容量,决定分多少页。

三、代码

UserMapper.java


	/**
	 * 查询用户表记录数
	 * @return
	 */
	public int count();
	
	public List<User> getUserListPage(@Param("userName")String userName,
									  @Param("userRole")Integer roleId,
									  @Param("from")Integer currentPageNo,
									  @Param("pageSize")Integer pageSize);

UserMapper.xml

<!-- 查询用户表的记录数 -->
	<select id="count" resultType="int">
		select count(1) as count from
		smbms_user
	</select>
	<resultMap type="user" id="userListPage">
		<id property="id" column="id"/>
		<result property="userCode" column="userCode"/>
		<result property="userName" column="userName"/>
		<result property="userRole" column="userRole"/>
		<result property="userRoleName" column="roleName"/>
	</resultMap>
	<select id="getUserListPage" resultMap="userListPage">
		select u.* from smbms_user u, smbms_role r
		where u.userRole=r.id
		<if test="userName != null and userName != ''">
			and userName like CONCAT('%',#{userName},'%')
		</if>
		<if test="userRole != null">
			and userRole=#{userRole}
		</if>
		order by creationDate DESC limit #{from},#{pageSize}
	</select>

UserMapperTest.java

	
	@Test
	public void testGetUserListPage() {
		List<User> userList = null;
		SqlSession sqlSession = null;
		String userName = "";
		Integer roleId = null;
		Integer currentPageNo = 0;
		Integer pageSize = 5;
		try {
			userList = MyBatisUtil.createSqlSession().getMapper(UserMapper.class).getUserListPage(userName, roleId, currentPageNo, pageSize);
		} catch(Exception e) {
			e.printStackTrace();
		} finally {
			MyBatisUtil.closeSqlSession(sqlSession);
		}
		for(User _user:userList) {
			logger.debug("testGetUserList userCode: " + _user.getUserCode()
						+ "and userName: " + _user.getUserName()
						+ "and userRoleName: " + _user.getUserRoleName()
						+ "and address:" + _user.getAddress());
		}
	}

四、当前页码currentPageNo计算公式:(页码-1)*  页面容量

因为MyBatis的分页是DAO层,所以currentPageNo默认写0,控制在service层。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值