【在SpringBoot项目中执行修改相册数据--MSC层】

目录

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();
    }

个人主页:居然天上楼

感谢你这么可爱帅气还这么热爱学习~~

人生海海,山山而川

你的点赞👍 收藏⭐ 留言📝 加关注✅

是对我最大的支持与鞭策

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

居然天上楼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值