全部开发者教程

企业级在线办公系统

上个小节我们实现了新增会议室这个功能,那么按照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);
    }
}