三层结构
文件结构如图
也可以笼统地都用@componnet
- Controller:接收数据、响应数据
- 对应
@Controller
- 接收对某个端口的请求
- 然后调用Service中的方法来获取处理后的数据
- 返回数据
- 对应
- Service:逻辑处理
- 对应
@Service
- 处理调用Dao得到的数据
- 对应
- Dao:数据访问
- 对应
@Respository
- 获取原始数据并返回
- 对应
一般情况下,都放在com.xxx
下
Controller
其中@RestController = @Response + @Controller
@RestController
public class EmpController {
//1. 获取Service层对象
private EmpService empService = new EmpServiceA();
//2. 绑定接口和函数
@RequestMapping("/listEmp")
public Result list(){
//3. 调用service层, 获取数据
List<Emp> empList = empService.listEmp();
//4. 响应数据
return Result.success(empList);
}
}
Service
首先是业务接口
public interface EmpService {
//获取员工列表
public List<Emp> listEmp();
}
然后是业务实现类
其中@override
可以说是提醒编译器编译时重点检查
//业务逻辑实现类(按照业务标准实现)
public class EmpServiceA implements EmpService {
//dao层对象
private EmpDao empDao = new EmpDaoA();
@Override
public List<Emp> listEmp() {
//1. 调用dao, 获取数据
List<Emp> empList = empDao.listEmp();
//2. 对数据进行转换处理 - gender, job
// empList.stream().forEach(emp -> {
// //处理 gender 1: 男, 2: 女
// String gender = emp.getGender();
// if("1".equals(gender)){
// emp.setGender("男");
// }else if("2".equals(gender)){
// emp.setGender("女");
// }
// //处理job - 1: 讲师, 2: 班主任 , 3: 就业指导
// 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;
}
}
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;
}
}