一、目的
提高代码的复用性和可读性。
二、代码
1.Dao层(数据访问操作)
使用接口,不使用普通的类。这样可以确保所有实现类遵循相同的规范和契约,接口定义了操作的契约,而不关心具体的实现。这使得DAO的实现与业务逻辑层解耦,业务逻辑层只需依赖于接口,而不需要知道具体的实现细节。这种解耦使得系统更加灵活,方便进行替换和修改实现类而不影响其他部分。
接口
public interface EmpDao {
public List<Emp> listEmp();
}
实现类
public class EmpDaoA implements EmpDao {
@Override
public List<Emp> listEmp() {
//1.加载并解析emp.xml
String file=this.getClass().getClassLoader().getResource("emp.xml").getFile();
System.out.println(file);
List<Emp> empList = XmlParserUtils.parse(file, Emp.class);
return empList;
}
}
2.Service层(业务逻辑处理)
接口
public interface EmpService {
public List<Emp> listEmp();
}
实现类
public class EmpServiceA implements EmpService {
private EmpDao empDao=new EmpDaoA();
@Override
public List<Emp> listEmp() {
//1.调用Dao获取数据
List<Emp> empList = empDao.listEmp();
//2.对数据进行转换处理
empList.stream().forEach(emp -> {
String gender = emp.getGender();
if("1".equals(gender)){
emp.setGender("男");
}
else if("2".equals(gender)){
emp.setGender("女");
}
String job = emp.getJob();
if("1".equals(job)){
emp.setJob("讲师");
}
else if("2".equals(job)){
emp.setJob("班主任");
}
else if("3".equals(job)){
emp.setJob("就业指导");
}
});
return empList;
}
}
3.Controller层(接收请求,响应数据)
@RestController
public class EmpController {
private EmpService empService=new EmpServiceA();
@RequestMapping("/listEmp")
public Result list(){
//3.响应数据
List<Emp> empList = empService.listEmp();
return Result.sucess(empList);
}
}
注:代码都省略了导包。