功能说明
实现根据id查询用户打卡记录的接口,根据给定的查询条件返回用户记录信息。
开发思路
- 定义查询表单:使用Java类表示前端传递的查询参数,并对其进行校验。
- 接收和处理请求:在控制器中接收前端的请求数据,进行参数校验后将数据传递给服务层。
- 服务层处理:服务层负责调用数据访问层,执行查询逻辑并返回结果。
- 数据访问层查询:编写SQL查询语句,根据传递的查询条件进行数据查询。
- 分页处理:实现分页逻辑,返回符合条件的数据及分页信息。
开发过程
1. 定义查询表单
@Data
public class SearchUserByIdForm {
@NotNull(message = "id不能为空")
@Min(value = 1, message = "id不能小于1")
private Integer id;
}
2. 接收和处理请求
@PostMapping("/searchById")
@SaCheckLogin
@SaCheckPermission(value = {"ROOT", "USER:SELECT"}, mode = SaMode.OR)
public R searchById(@RequestBody @Valid SearchUserByIdForm form) {
HashMap map = userService.searchById(form.getId());
return R.ok(map);
}
3. 数据访问层查询
<!-- 根据id查找用户 -->
<select id="searchById" parameterType="int" resultType="HashMap">
SELECT u.nick_name AS nickName,
u.id,
u.avatar,
u.sex,
ui.uuid,
ui.name,
ui.phone,
ui.email,
ui.birthday,
ui.address,
ui.height,
ui.weight,
ui.bmi,
ui.likes,
ui.dislikes,
ui.goal,
ui.diseases,
u.status,
u.create_time AS createTime
FROM user u
left JOIN user_info ui ON u.id = ui.user_id
WHERE u.id = ${id}
</select>
4. 分页处理
分页逻辑通过计算 start
参数并在SQL查询中使用 LIMIT
和 OFFSET
来实现,返回符合条件的数据及分页信息。
总结
通过以上步骤,实现了分页查询用户打卡记录的功能。前端通过POST请求将查询条件发送到后端,后端接收并校验参数后,将查询条件传递给服务层。服务层根据查询条件调用数据访问层执行数据库查询,并返回查询结果及分页信息。