SSM 是 Spring + Spring MVC + MyBatis 的集成框架,常用于 Java Web 开发。MySQL 是一种关系型数据库管理系统。分页是指将大量数据分成多个页面进行展示,以提高用户体验和系统性能。
适用于数据量较大的系统,如电商网站的商品列表、新闻网站的文章列表等。
以下是一个简单的 SSM + MySQL 分页示例:
假设我们有一个 user
表:
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
在 UserMapper.xml
中配置分页查询:
<select id="selectUsersByPage" resultType="User">
SELECT * FROM user LIMIT #{offset}, #{pageSize}
</select>
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<User> getUsersByPage(int pageNum, int pageSize) {
int offset = (pageNum - 1) * pageSize;
return userMapper.selectUsersByPage(offset, pageSize);
}
}
@Controller
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/users")
public String getUsers(@RequestParam(defaultValue = "1") int pageNum,
@RequestParam(defaultValue = "10") int pageSize,
Model model) {
List<User> users = userService.getUsersByPage(pageNum, pageSize);
model.addAttribute("users", users);
return "userList";
}
}
在 userList.jsp
中展示分页数据:
<table>
<tr>
<th>ID</th>
<th>Name</th>
<th>Age</th>
</tr>
<c:forEach items="${users}" var="user">
<tr>
<td>${user.id}</td>
<td>${user.name}</td>
<td>${user.age}</td>
</tr>
</c:forEach>
</table>
原因:可能是计算偏移量 offset
的公式有误。
解决方法:确保 offset
的计算公式正确,即 offset = (pageNum - 1) * pageSize
。
原因:可能是数据量过大,导致查询时间过长。
解决方法:
LIMIT
子句。原因:可能是多个线程同时访问数据库,导致数据不一致。
解决方法:
希望以上信息对你有所帮助!
领取专属 10元无门槛券
手把手带您无忧上云