0.功能架构图
1.UML类图
-
员工
-
部门
2.员工类与部门类的设计
2.1 员工类
- 属性:员工的信息需要详细记录,所以设计了员工编号、名字、年龄、性别等属性。
@Data @AllArgsConstructor @NoArgsConstructor public class Employee { private int empID; private String name; private String sex; private int age; private String password; private String role; //员工所属部门 }
- 方法:对员工进行的操作就是最基本的增删改查。
public interface EmpMapper { //增加一个员工 int addEmp(Employee employee); //删除一个员工 int deleteEmp(int empId); //更新一个员工 int updataEmp(Employee employee); //查询一个员工 Employee queryEmpById(int empId); //查询全部员工 List<Employee> queryAllEmp(); //通过名字查员工 Employee queryEmpByName(String empName); }
2.2 部门类
- 属性:部门的属性有部门的编号及部门名称,还有一个员工编号,这个属性是为了实现数据库中员工表和部门表的绑定,从而实现更多的功能(没实现)。
@Data @AllArgsConstructor @NoArgsConstructor public class Department { private int deptID; private int empID; private String deptName; }
- 方法:对部门进行的操作也是增删改查。
public interface DeptMapper { //增加一个部门 int addDept(Department department); //删除一个部门 int deleteDept(int empid); //更新一个部门 int updataDept(Department department); //查询一个部门 Department queryDeptByName(String deptName); Department queryDeptById(int id); //查询全部部门 List<Department> queryAllDept(); }
3.业务实现(以部门类为例 )
3.1 Service接口
- 提供了用户所需要的业务
public interface DeptService {
//增加一个部门
int addDept(Department department);
//删除一个部门
int deleteDept(int id);
//更新一个部门
int updataDept(Department department);
//查询一个部门
Department queryDeptByName(String deptName);
Department queryDeptById(int id);
//查询全部部门
List<Department> queryAllDept();
}
3.2 ServiceImpl类
- 实现Service接口,ServiceImpl中会调用Mapper,然后通过调用Mapper的方法来调用.xml文件中的语句,对数据库进行操作。
public class DeptServiceImpl implements DeptService {
private DeptMapper deptMapper;
public void setDeptMapper(DeptMapper deptMapper) {
this.deptMapper=deptMapper;
}
@Override
public int addDept(Department department) {
return deptMapper.addDept(department);
}
@Override
public int deleteDept(int id) {
return deptMapper.deleteDept(id);
}
@Override
public int updataDept(Department department) {
return deptMapper.updataDept(department);
}
@Override
public Department queryDeptByName(String deptName) {
return deptMapper.queryDeptByName(deptName);
}
@Override
public Department queryDeptById(int id) {
return deptMapper.queryDeptById(id);
}
@Override
public List<Department> queryAllDept() {
return deptMapper.queryAllDept();
}
}
4.前后端交互(以部门类为例)
- 在controller中调用service来实现各种业务,然后通过model将从数据库中查询到的结果返回给前端。
@Controller
@RequestMapping("/fun3")
public class DeptController {
@Autowired
@Qualifier("DeptServiceImpl")
private DeptService deptService;
//查询部门信息
@RequestMapping("/dept_mg")
public String list(Model model) {
// System.out.println("dept_mg");
List<Department> list = deptService.queryAllDept();
model.addAttribute("list",list);
return "dept_mg";
}
//跳转到增加部门界面
@RequestMapping("/toAddDept")
public String toAddDept() {return "addDept";}
//添加部门请求
@RequestMapping("/addDept")
public String addDept(Department dept) {
deptService.addDept(dept);
return "redirect:/fun/dept_mg";
}
//跳转到修改页面
@RequestMapping("/toUpdate")
public String toUpdataDept(Integer deptID,Model model) {
Department dept=deptService.queryDeptById(deptID);
model.addAttribute("Qdept",dept);
return "updataDept";
}
//修改部门信息
@RequestMapping("/updataDept")
public String updataDept(Department dept) {
deptService.updataDept(dept);
return "redirect:/fun/dept_mg";
}
//删除部门
@RequestMapping("/delDept")
public String deleteDept(Integer deptID) {
deptService.deleteDept(deptID);
return "redirect:/fun/dept_mg";
}
// 查询部门
@RequestMapping("/queryDept")
public String queryDept(Integer queryDeptId,Model model) {
Department department=deptService.queryDeptById(queryDeptId);
List<Department> list=new ArrayList<Department>();
list.add(department);
if(department==null) {
list=deptService.queryAllDept();
model.addAttribute("error","未查到");
}
model.addAttribute("list",list);
return "dept_mg";
}
}
5.数据库读写
-
使用了DAO模式。使用了c3p0连接池连接数据库,提高了数据库链接的性能。在.xml文件中实现对数据库的操作。