在Java的SSM(Spring + Spring MVC + MyBatis)框架中,实现分页查询可以通过以下步骤来完成:
在MyBatis的Mapper XML文件中,编写分页查询的SQL语句。例如,对于一个名为User
的表,可以创建如下分页查询的SQL语句:
<select id="selectPage" parameterType="map" resultMap="BaseResultMap">
SELECT * FROM user
LIMIT #{offset}, #{pageSize}
</select>
其中,#{offset}
表示查询的起始位置,#{pageSize}
表示每页显示的记录数。
创建一个分页参数对象,用于接收前端传递的分页信息。例如,创建一个名为PageParam
的Java类:
public class PageParam {
private int pageNum; // 当前页
private int pageSize; // 每页显示的记录数
// getter and setter methods
}
在Mapper接口中,添加一个分页查询的方法,接收分页参数对象作为参数。例如:
public interface UserMapper {
List<User> selectPage(PageParam pageParam);
}
在Service层,注入Mapper接口,并调用分页查询的方法。例如:
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<User> selectPage(PageParam pageParam) {
return userMapper.selectPage(pageParam);
}
}
在Controller层,接收前端传递的分页信息,并调用Service层的分页查询方法。例如:
@Controller
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/selectPage")
public String selectPage(PageParam pageParam, Model model) {
List<User> userList = userService.selectPage(pageParam);
model.addAttribute("userList", userList);
model.addAttribute("pageParam", pageParam);
return "userList";
}
}
在前端页面,使用分页组件(如Bootstrap的pagination插件)显示分页信息,并添加点击分页按钮时发送分页请求的逻辑。例如,使用Thymeleaf模板引擎:
<div class="user-list">
<table>
<!-- 显示用户列表 -->
</table>
</div>
<div class="pagination">
<span th:text="${pageParam.pageNum}"></span>
<a th:href="@{/selectPage(pageNum=${pageParam.pageNum} - 1, pageSize=${pageParam.pageSize})}">上一页</a>
<span th:text="${pageParam.pageNum * pageParam.pageSize} - ${pageParam.pageSize}">共${pageParam.totalCount}条,当前第${pageParam.pageNum}页</span>
<a th:href="@{/selectPage(pageNum=${pageParam.pageNum} + 1, pageSize=${pageParam.pageSize})}">下一页</a>
</div>
通过以上步骤,就可以实现基于SSM框架的分页查询功能。