业务逻辑层-Service

业务逻辑层-Service

Service的开发规范是先写接口,再写实现类。

通常,会在项目的根包下创建service子包,Service接口将存放在这个包中,并且,还会在service包下创建impl子包,Service实现类都将放在这个包中,实现类都会使用ServiceImpl作为类名的后缀。

例如:在项目的根包下创建service.IAlbumService接口,然后,再创建service.impl.AlbumServiceImpl类,且此类将实现IAlbumService接口。

为了保证项目启动时可以正确的创建此实现类,需要类上添加@Service注解。

package cn.tedu.csmall.product.service;

public interface IAlbumService {
}
package cn.tedu.csmall.product.service.impl;

import cn.tedu.csmall.product.service.IAlbumService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

@Slf4j
@Service
public class AlbumServiceImpl implements IAlbumService {

    public AlbumServiceImpl() {
        log.info("创建业务对象:AlbumServiceImpl");
    }

}

假设需要实现:添加相册。

则在接口中添加抽象方法,关于抽象方法的设计:

  • 返回值类型:当客户端提交了相应的请求到服务器端,业务逻辑层正确的处理了数据后,是否需要返回某个数据(设计返回值类型时,不需要考虑失败的情况,因为将通过抛出异常来表示失败
  • 方法名称:自定义
  • 参数列表:所有应该由客户端提交的数据属性
void addNew(AlbumAddNewDTO albumAddNewDTO);

然后,在实现类中:

@Override
public void addNew(AlbumAddNewDTO albumAddNewDTO) {
    log.debug("开始处理【添加相册】的业务,参数:{}", albumAddNewDTO);
    // 调用AlbumMapper对象的int countByName(String name)方法统计此名称的相册的数量
    String name = albumAddNewDTO.getName();
    int countByName = albumMapper.countByName(name);
    log.debug("尝试添加的相册名称是:{},在数据库中此名称的相册数量为:{}", name, countByName);
    // 判断统计结果是否大于0
    if (countByName > 0) {
        // 是:相册名称已经存在,抛出RuntimeException异常
        String message = "添加相册失败!相册名称【" + name + "】已存在!";
        log.warn(message);
        throw new RuntimeException(message);
    }

    // 获取当前时间:LocalDateTime now = LocalDateTime.now()
    LocalDateTime now = LocalDateTime.now();
    // 创建Album对象
    Album album = new Album();
    // 补全Album对象中各属性的值:name:来自参数
    // 补全Album对象中各属性的值:description:来自参数
    // 补全Album对象中各属性的值:sort:来自参数
    BeanUtils.copyProperties(albumAddNewDTO, album);
    // 补全Album对象中各属性的值:gmtCreate:now
    album.setGmtCreate(now);
    // 补全Album对象中各属性的值:gmtModified:now
    album.setGmtModified(now);
    // 调用AlbumMapper对象的int insert(Album album)方法插入相册数据
    log.debug("即将向数据库中插入数据:{}", album);
    albumMapper.insert(album);
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

风雨兼程1217

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

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

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

打赏作者

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

抵扣说明:

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

余额充值