员工分页查询功能实现
需求分析和设计
代码开发
先设计类
将对应分页查询的传参类以及结果类进行封装
对应真正返回的为Result<PageResult>
Controller
/**
*
* @param employeePageQueryDTO
* @return
*/
@GetMapping("/page")
@ApiOperation("员工分页查询")
public Result<PageResult> page(@RequestBody EmployeePageQueryDTO employeePageQueryDTO){
log.info("员工分页查询,参数为{}",employeePageQueryDTO);
PageResult pageResult=employeeService.pageQuery(employeePageQueryDTO);
return Result.success(pageResult);
}
serviceimpl
@Override
public PageResult pageQuery(EmployeePageQueryDTO employeePageQueryDTO) {
//select * from employee limit 0,10(开始记录数,一共几条) 页码和一页记录数
//对应关系limit (页码-1)*每页记录数,一页记录数,通过pageHelper
//自己学一下PageHelper插件
PageHelper.startPage(employeePageQueryDTO.getPage(),employeePageQueryDTO.getPageSize());
Page<Employee> page = employeeMapper.pageQuery(employeePageQueryDTO);
long total = page.getTotal();
List<Employee> result = page.getResult();
return new PageResult(total,result);
}
Mapper
Page<Employee> pageQuery(EmployeePageQueryDTO employeePageQueryDTO);
对应的xml文件
<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>
pageHelper底层
为什么我们并没有查询对应的
sql还能呈现出分页效果呢?
pagehelper底层也是根据ThreadLocal来实现分页查询
然后在查询的时候取出来进行动态的拼接
顺手还能把计算做了
代码完善
测试完后发现返回的修改时间数据以数据的形式返回
渲染后不是我们想要的结果 应为,xxxx年xx月x日 xx时 xx分 xx秒
完善
方式1是针对单个
方式2是统一处理
先只修改createtime,重新启动测试
createtime变了,但updatetime还是数组形式
第二种方式
/**
* 扩展springmvc框架的消息转换器
* @param converters
*/
@Override
protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
//扩展消息转换器
//自己创建一个消息转换器对象
MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
//为消息转化器设置一个对象转换器,可以将java对象序列化为json数据
mappingJackson2HttpMessageConverter.setObjectMapper(new JacksonObjectMapper());
//将自己的消息转换器加入容器中
converters.add(0,mappingJackson2HttpMessageConverter);
}
}
对象转换器,需要我们自己进行设置
converters.add(0,mappingJackson2HttpMessageConverter);
默认添加消息转换器会放到最后一位,我们设置索引0,优先级会变为最高
最后的效果
启用禁用员工账号功能开发
需求分析
启用状态账号可以禁用(显示禁用的操作)
禁用状态的账号相反
当然被禁用的账号是不能进行登录的
代码开发
controller
service
mapper的sql语句
这个测试就没什么好测试的了
主要是为什么要把id传参和status封装成employee对象
我感觉,应该是后面的修改编辑员工的操作在mapper里面
和我们这个修改状态是一样的,接收的为employee参数
所以就省了一个单独改状态的方法
编辑员工功能开发
需求分析和设计
有回显操作
需要进行先根据id查询,然后修改操作
设计两个接口
1.根据id查询员工信息
2.更新员工信息
查询接口
编辑员工接口
代码开发
controller
service
mapper
这里在这之前猜的没错,就是用了修改状态的能够update语句,就不用再写修改员工的,mapper了
我测试完就没问题的
先swagger测试
再前后端联调
导入分类模板
分类模板类似于对应的员工操作
所以就直接导入了
导入时的问题
一直报错找不到Category类
<select id="list" resultType="Category">
然后我把所有xml文件中的Category改为
com.sky.entity.Category
就成功运行了
就是要写全路径不仅仅是类名