Day02
一、新增员工
1. 需求分析和设计
2. 代码开发
1. DTO
根据新增员工接口设计对应的DTO,来接收前端传入的数据。
当前端提交的数据和实体类中对应的属性差别比较大的时候,建议使用DTO来封装数据。
2. @RequestBody
前端post请求传过来的json格式的数据,用@RequestBody接收。
3. 对象属性拷贝
BeanUtils.copyProperties(employeeDTO, employee);
//属性名必须一致
4. 当前时间
LocalDateTime.now()
5. 密码加密
DigestUtils.md5DigestAsHex(PasswordConstant.DEFAULT_PASSWORD.getBytes());
6. TODO后续改进
// TODO 后续改进。。。
7. InsertSQL语句
@Insert("insert into employee(name, username, password) " +
"values " +
"(#{name}, #{username}, #{password})")
变量定义的时候用的驼峰命名法,数据库里是下划线命名法。
8. 接口调试
地址:http://localhost:8080/doc.html
9. JWT相关知识
客户端发起的每一次请求都是一个单独的线程。
可以计算这句代码的结果(debug的时候看一下值是多少)。
二、员工分页查询
2.1 需求分析与设计
需要传入的参数是:页码,每页的记录数和查询的员工姓名
2.1.1 Query
get请求,请求参数是Query,通过地址栏的问号传输。
2.2 代码实现
2.2.1 pagehelper
- 在pom文件中引入pagehelper依赖
#### 2.2.2 动态查询SQL
<select id="pageQuery" resultType="com.sky.entity.Employee">
select * from employee
<where>
<if test="name != null and name != ''">
and name like concat('%', #{name}, '%')
</if>
</where>
order by create_time desc
</select>
like是模糊查询
不需要再加limit关键词分页了,pagehelper动态插入该查询。
public PageResult page(EmployeePageQueryDTO employeePageQueryDTO) {
//开始分页查询
PageHelper.startPage(employeePageQueryDTO.getPage(), employeePageQueryDTO.getPageSize());
Page<Employee> page = employeeMapper.pageQuery(employeePageQueryDTO);
long total = page.getTotal();
List<Employee> records = page.getResult();
return new PageResult(total, records);
}
2.2.2 对后端传向前端的数据进行统一的处理
/**
* 扩展springMVC框架的消息转换器
* @param converters
*/
@Override
protected void extendMessageConverters(List<HttpMessageConverter<?>> converters)
{
log.info("扩展消息转换器。。。。");
//创建一个消息转换器对象
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
//需要为消息转换器设置一个对象转换器,对象转换器可以将Java对象序列化为json数据
converter.setObjectMapper(new JacksonObjectMapper());
//将自己的消息转换器加入容器中
converters.add(0, converter);
}
三、启用禁用员工账号
1. 路径参数
@PathVariable Integer status
2. 构造employee对象
//传统写法
Employee employee = new Employee();
employee.setStatus(status);
employee.setId(id);
Employee employee = Employee.builder()
.status(status)
.id(id)
.build();