上个小节我们实现了新增会议室这个功能,那么按照CRUD的顺序,本小节我们要做修改会议室信息的功能。
如果会议室关联了会议,那么会议室的信息是否可以修改?
之所以提出这个问题,那是因为tb_meeting
表的place
字段关联tb_meeting_room
表的name
字段,如果会议室的名字改掉了,那岂不是查询不到会议记录了吗?确实存在这个问题,但是并不严重。因为我们查询会议表的时候,开会地点已经记录在place
字段里面了,所以不需要跟tb_meeting_room
表左连接。因此,原有的会议,到时间了依然可以召开。
一、编写持久层代码
在TbMeetingRoomDao.xml
文件中,定义SQL语句。
<update id="update" parameterType="com.example.emos.api.db.pojo.TbMeetingRoom">
UPDATE tb_meeting_room
SET name=#{name},
max=#{max},
`desc`=#{desc},
status=#{status}
WHERE id=#{id}
</update>
在TbMeetingRoomDao.java
接口中,定义抽象DAO方法。
public interface TbMeetingRoomDao {
……
public int update(TbMeetingRoom meetingRoom);
}
三、编写业务层代码
在MeetingRoomService.java
接口中,定义抽象方法。
public interface MeetingRoomService {
……
public int update(TbMeetingRoom meetingRoom);
}
在MeetingRoomServiceImpl.java
类中,实现抽象方法。
public class MeetingRoomServiceImpl implements MeetingRoomService {
……
@Override
public int update(TbMeetingRoom meetingRoom) {
int rows = meetingRoomDao.update(meetingRoom);
return rows;
}
}
四、编写Web层代码
创建UpdateMeetingRoomForm.java
类,封装Ajax提交的数据。
@Schema(description = "更新会议室表单")
@Data
public class UpdateMeetingRoomForm {
@NotNull(message = "id不能为空")
@Min(value = 1, message = "")
@Schema(description = "会议室ID")
private Integer id;
@NotBlank(message = "name不能为空")
@Pattern(regexp = "^[a-zA-Z0-9\\u4e00-\\u9fa5]{2,20}$",message = "name内容不正确")
@Schema(description = "会议室名称")
private String name;
@NotNull(message = "max不能为空")
@Range(min = 1, max = 99999, message = "max必须在1~99999之间")
@Schema(description = "人数上限")
private String max;
@Length(max = 20,message = "desc不能超过20个字符")
@Schema(description = "备注")
private String desc;
@NotNull(message = "status不能为空")
@Range(min = 0,max = 1,message = "status只能是0或者1")
@Schema(description = "状态")
private Short status;
}
在MeetingRoomController.java
类中,定义Web方法,然后就可以用Swagger测试这个Web方法了。
public class MeetingRoomController {
……
@PostMapping("/update")
@Operation(summary = "修改会议室")
@SaCheckPermission(value = {"ROOT", "MEETING_ROOM:UPDATE"}, mode = SaMode.OR)
public R update(@Valid @RequestBody UpdateMeetingRoomForm form) {
TbMeetingRoom meetingRoom = JSONUtil.parse(form).toBean(TbMeetingRoom.class);
int rows = meetingRoomService.update(meetingRoom);
return R.ok().put("rows", rows);
}
}