前言
2021SC@SDUSC
概述
继第一次的项目概述,和二三四的Controller层源码分析,我们已经对关键代码的使用和其内部实现原理有了一定的了解,接下来将按照代码调用的流程,从Controller层过渡到Service层,这是因为在Controller层接受了请求之后,要调用Service层即服务层的服务进行处理,而不是直接进行数据操作,所以接下来几篇我们将重点放在Service层的关键代码以及其内部实现原理上
源码
源码如下:
@Service
public class BindService {
@Autowired
private BindMapper bindMapper;
@Autowired
private RoleMapper roleMapper;
@Autowired
private UserInfoMapper userInfoMapper;
@Transactional
public Integer bindStuNum(StudentBind studentBind) throws DuplicateKeyException {
if (UserUtil.getCurrentUserId() != null) {
studentBind.setUserId(UserUtil.getCurrentUserId());
if (bindMapper.validateStudentBind(studentBind) > 0) {
roleMapper.insertRoleUserLink(studentBind.getUserId(), 3);
UserInfo info = userInfoMapper.selectByUserId(UserUtil.getCurrentUserId());
info.setStuNum(studentBind.getStuNum());
info.setRealName(studentBind.getName());
userInfoMapper.updateUserInfo(info);
return 1;
} else {
return 0;
}
}
return null;
}
}
我们可以看到,Service层针对Controller层的调用提供方法,并提供一定的逻辑处理,调用Mapper数据层的方法获取数据。
在这里有一部分的关键代码,但是不多,需要我们了解的有以下几点:
1.@Service
2.@Transactional
3.涉及实体类的方法
4.@Autowired(在前面已经分析过,略)