套路顺序:
下面是一个新增员工功能的开发的例子
1.需求分析和设计
根据产品原型对需求进行分析,对功能接口进行设计,确定返回的参数类型。
接口设计好后对数据库进行设计。
(前后端分离开发,要先把接口设计好,才能并行开发。)
(约定:后端响应给前端的数据整体会封装成一个result对象返回。大多项目开发是这样,不是唯一)
2.代码开发
一般编写顺序:
controller—> service—> serviceImpl—> mapper—> (动态sql--mapper.xml)
*xml文件不一定需要编写,看情况*
前端提交给后端的是json格式的数据,可以用实体类接收。但当前端提交的数据和实体类中对应的属性差别比较大时,采用DTO来封装数据(EmployeeDTO),即前端提交什么数据DTO就封装什么属性。
@PostMapping
@ApiOperation("新增员工")
public Result save(@RequestBody EmployeeDTO employeeDTO) {
log.info("新增员工:{}", employeeDTO);
System.out.println("当前线程的ID:"+Thread.currentThread().getId());
employeeService.save(employeeDTO);
return Result.success();
}
在save()方法中声明一个参数:接收前端提交过来的数据(这里用DTO来接收,而且是一个json格式的数据,需要加上@RequestBody注解)
这里的是post请求方式,所以用@PostMapping注解
@ApiOperation()这个是用来描述该方法的功能
/**
* 新增员工
* @param employeeDTO
*/
public void save(EmployeeDTO employeeDTO){
System.out.println("当前线程的ID:"+Thread.currentThread().getId());
final Employee employee = new Employee();
//对象属性拷贝
//前面拷贝到后面(目标) 属性名必须一致
BeanUtils.copyProperties(employeeDTO,employee);
//设置账号状态,默认正常状态 1表示正常,0表示锁定
//StatusConstant 常量类(复用)
employee.setStatus(StatusConstant.ENABLE);
//设置密码,默认密码123456
employee.setPassword(DigestUtils.md5DigestAsHex(PasswordConstant.DEFAULT_PASSWORD.getBytes()));
employeeMapper.insert(employee);
}
save(EmployeeDTO employeeDTO)这里save()中传过来的是DTO是为了方便封装前端提交过来的数据,但最终传给持久层mapper建议使用实体类,所以得进行对象转换,把DTO转为实体。而实体类里面是空的,所以一个一个来设置其属性,具体值已经在DTO里面封装好了,但一个一个太麻烦,所以使用BeanUtils工具类进行属性拷贝,一次性把属性拷贝过去,属性名必须一致。 BeanUtils.copyProperties(employeeDTO,employee)前面拷贝到后面 。
在这里面把所有属性封装好了,就可以调用持久层(这里指employMapper),把实体对象放进去employeeMapper.insert(employee);把数据插入。
接着就是对mapper的方法进行扩展:在service接口里面创建这个方法,因为比较简单所以直接在方法什么进行sql的编写,写的比较多的大佬可能会发现后面没有继续在Impl中对service方法实现的代码开发,这个例子比较简单,对于很多业务逻辑都是在service中把方法编写完再在serviceImpl中对其方法进行实现。
3.功能测试
......
4.代码完善
后面就自己去想咯!
这是目前按自己的理解整理的一点笔记!参考着看!等我理解更透彻继续更新!