在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框架的分頁查詢功能。