目录
1. 编辑相册--执行修改--Mapper层
2. 编辑相册--执行修改--Service层
3. 编辑相册--执行修改--Controller层
1. 编辑相册--执行修改--Mapper层
执行修改相册使用已有的update()即可。
另外,还需要检查“提交修改的名称,是不是其它数据的名称”,则应该在AlbumMapper.java接口中添加抽象方法:
int countByNameAndNotId(@Param("id") Long id, @Param("name") String name);
**提示:**在主流的Spring Boot项目中,以上注解@Param并不是必须的!
并配置其映射的SQL语句:
<select id="countByNameAndNotId" resultType="int">
    SELECT count(*) FROM pms_album WHERE name=#{name} AND id!=#{id}
</select>完成后,在AlbumMapperTests中编写并执行测试:
@Test
void countByNameAndNotId() {
    Long id = 1L;
    String name = "测试数据";
    int count = mapper.countByNameAndNotId(id, name);
    log.debug("统计不是【{}】但名称是【{}】的数据的数量,结果:{}", id, name, count);
}2. 编辑相册--执行修改--Service层
在pojo.dto下创建AlbumUpdateDTO类,在类中声明允许修改的属性(name / description / sort):
package cn.tedu.csmall.product.pojo.dto;
/**
 * 修改相册基本数据的DTO类
 *
 * @author java@tedu.cn
 * @version 0.0.1
 */
@Data
public class AlbumUpdateDTO implements Serializable {
    /**
     * 相册名称
     */
    @ApiModelProperty(value = "相册名称", required = true)
    private String name;
    /**
     * 相册简介
     */
    @ApiModelProperty(value = "相册简介", required = true)
    private String description;
    /**
     * 排序序号
     */
    @ApiModelProperty(value = "排序序号", required = true)
    private Integer sort;
}在IAlbumService中添加抽象方法:
/**
* 修改相册基本信息
* @param id 尝试修改的相册的id
* @param albumUpdateDTO 封装了新数据的对象
*/
void updateInfoById(Long id, AlbumUpdateDTO albumUpdateDTO);
在AlbumServiceImpl中实现以上方法:
@Override
public void updateInfoById(Long id, AlbumUpdateDTO albumUpdateDTO) {
    log.debug("开始处理【修改相册基本信息】的业务,参数ID:{},新数据:{}", id, albumUpdateDTO);
    // 检查尝试修改的数据是否存在
    Object queryResult = albumMapper.getStandardById(id);
    if (queryResult == null) {
        String message = "修改相册基本信息失败,尝试修改的数据不存在!";
        log.warn(message);
        throw new ServiceException(ServiceCode.ERR_NOT_FOUND, message);
    }
    // 检查名称是否与别的相册数据冲突
    int count = albumMapper.countByNameAndNotId(id, albumUpdateDTO.getName());
    if (count > 0) {
        String message = "修改相册基本信息失败,相册名称已经被别的数据占用!";
        log.warn(message);
        throw new ServiceException(ServiceCode.ERR_CONFLICT, message);
    }
    // 创建Album对象
    Album album = new Album();
    // 将参数DTO的各属性复制到以上实体对象中
    BeanUtils.copyProperties(albumUpdateDTO, album);
    album.setId(id);
    log.debug("即将修改数据:{}", album);
    albumMapper.update(album);
}在AlbumServiceTests中编写并执行测试:
@Test
void updateInfoById() {
    Long id = 1L;
    AlbumUpdateDTO albumUpdateDTO = new AlbumUpdateDTO();
    albumUpdateDTO.setName("测试数据");
    albumUpdateDTO.setDescription("非关键数据");
    albumUpdateDTO.setSort(100);
    try {
        service.updateInfoById(id, albumUpdateDTO);
        log.debug("修改数据完成!");
    } catch (ServiceException e) {
        log.debug("修改数据失败!具体原因请参见日志!");
    }
}3. 编辑相册--执行修改--Controller层
  // http://localhost:9080/albums/9527/update
    @ApiOperation("修改相册基本信息")
    @ApiOperationSupport(order = 300)
    @ApiImplicitParam(name = "id", value = "相册ID", required = true, dataType = "long")
    @PostMapping("/{id:[0-9]+}/update")
    public JsonResult updateInfoById(@PathVariable Long id, AlbumUpdateDTO albumUpdateDTO) {
        log.debug("开始处理【修改相册基本信息】的请求,参数ID:{},新数据:{}", id, albumUpdateDTO);
        albumService.updateInfoById(id, albumUpdateDTO);
        return JsonResult.ok();
    }个人主页:居然天上楼
感谢你这么可爱帅气还这么热爱学习~~
人生海海,山山而川
你的点赞👍 收藏⭐ 留言📝 加关注✅
是对我最大的支持与鞭策




















