一、前情提要
上一次我们完成了历史工单管理服务的开发,这一次我们来实现实训室管理服务。
二、接口设计
1.获取全部机房信息:searchAllClass
- 参数:无
- 返回值:
List<Class>
2.通过机房ID获取机房信息:searchClassById
- 参数:
id
(机房ID编号,类型为Integer
) - 返回值:
Class
(机房的实体类)
3.通过机房名称获取机房信息:searchClassByName
- 参数:
name
(机房名称,类型为String
) - 返回值:
List<Class>
4.通过实训楼ID称获取机房信息:searchClassByBuildingId
- 参数:
buildingId
(机房所属实训楼ID,类型为String
) - 返回值:
List<Class>
5.获得全部实训室总数:getClassCount
- 参数:无
- 返回值:
Integer
6.保存机房信息:saveClass
- 参数:
Class
(实训室实体类) - 返回值:无
7.修改你机房信息:updateClass
- 参数:
Class
(实训室实体类) - 返回值:无
8.删除机房信息:deleteClass
- 参数:
id
(机房ID编号,类型为Integer
) - 返回值:无
9.增加实训室可用电脑:`increaseComputerEnable``
- 参数:
id
(机房ID编号,类型为Integer
) - 返回值:无
10.减少实训室可用电脑:reduceComputerEnable
- 参数:
id
(机房ID编号,类型为Integer
) - 返回值:无
三、实践操作
注意:我不会对所有接口进行详解,只会对一些需要注意的地方进行讲解。
1.按照上方设计的接口创建接口类ClassService
在com.repairsystem.service
下创界接口类ClassService
package com.repairsystem.service;
import com.repairsystem.entity.Class;
import java.util.List;
/**
* @author CheungChingYin
* @date 2019/1/17
* @time 14:45
*/
public interface ClassService {
/**
* 获取全部机房信息
* @return
*/
List<Class> searchAllClass();
/**
* 通过机房ID获取机房信息
* @param id
* @return
*/
Class searchClassById(Integer id);
/**
* 通过机房名称获取机房信息
* @param name
* @return
*/
List<Class> searchClassByName(String name);
/**
* 通过实训楼ID称获取机房信息
* @param buildingId
* @return
*/
List<Class> searchClassByBuildingId(String buildingId);
Integer getClassCount();
/**
* 保存机房信息
* @param classes
*/
void saveClass(Class classes);
/**
* 修改你机房信息
* @param classes
*/
void updateClass(Class classes);
/**
* 删除机房信息
* @param id
*/
void deleteClass(Integer id);
/**
* 增加实训室可用电脑
* @param id
*/
void increaseComputerEnable(Integer id);
/**
* 减少实训室可用电脑
* @param id
*/
void reduceComputerEnable(Integer id);
}
2.创建接口实现类ClassServiceImpl
在com.repairsystem.service.Impl
下创建接口实现类ClassServiceImpl
,重写ClassService
接口。
@Service
public class ClassServiceImpl implements ClassService {
@Autowired
private ClassMapper classMapper;
}
3.实现增加实训室可用电脑:increaseComputerEnable
- 参数:
id
(机房ID编号,类型为Integer
) - 返回值:无
这个服务主要用于当维修工单完成的时候,也就意味着损坏的电脑已经修好了,可以使用了,所以需要将记录可用电脑数+1,以保证电脑可用数的准确性。
在com.repairsystem.service.Impl.ClassServiceImpl
编写以下代码:
@Transactional(propagation = Propagation.REQUIRED)
@Override
public void increaseComputerEnable(Integer classId) {
Class classes = classMapper.getClassById(classId);
Integer computerEnable = classes.getComputerEnable() + 1;
Integer computerDisable = classes.getComputerDisable() - 1;
classes.setComputerEnable(computerEnable);
classes.setComputerDisable(computerDisable);
classMapper.updateByPrimaryKeySelective(classes);
}
原理就是按照实训室ID查询该实训室的可用数和不可用数,然后可用数+1,不可用数-1,最后更新数据即可。
但是这样做相当于请求了数据库两次,是不建议的,因为当并发量大的时候数据库可能就撑不住了;建议使用自定义SQL语句的方式,进行自增和自减,这样只需要一次请求数据库即可,减少了一半的请求。
到这里,Service层开发——实训室管理服务开发已经完成了。如果您对次篇文章有疑问,可以在文章下方留言,谢谢您的阅读。如对【机房报修管理系统】系列文章有兴趣,可以关注或收藏我的文章,您的支持是我最大的动力,我会尽快推出下一期内容,敬请期待。