员工分页查询
此处使用 mybatis 的分页插件 PageHelper 来简化分页代码的开发。底层基于 mybatis 的拦截器实现(pom.xml中)
1. 接收前端提交过来的数据
public PageResult pageQuery ( 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. employeeMapper中声明pageQuery方法
Page < Employee > pageQuery ( EmployeePageQueryDTO employeePageQueryDTO) ;
3. 动态SQL,添加XML
// EmployeeMapper.xml
// mapper标签中
< 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 # 这里不能加分号不然就是500!!!
</ select>
4. 存在问题
后端返回给前端的时间格式,并不是完全格式化成年月日时分秒的,返回的是个数组,因此前端直接显示的时候会有问题 需要处理返回的时间格式
5. 解决方式
5.1 添加注解
在属性上加注解,对日期进行格式化 这种方式只能处理一个属性,后面其它LocalDateTime变量上面都得加
@JsonFormat ( pattern = "yyyy-MM-dd HH:mm:ss" )
private LocalDateTime createTime;
@JsonFormat ( pattern = "yyyy-MM-dd HH:mm:ss" )
private LocalDateTime updateTime;
5.2 统一处理
在WebMvcConfiguration.java中扩展Spring MVC的消息转换器,统一对日期类型进行格式化处理 WebMvcConfiguration 继承 WebMvcConfigurationSupport,重写父类的extendMessageConverters方法
@Override
protected void extendMessageConverters ( List < HttpMessageConverter < ? > > converters) {
log. info ( "扩展消息转换器..." ) ;
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter ( ) ;
converter. setObjectMapper ( new JacksonObjectMapper ( ) ) ;
converters. add ( 0 , converter) ;
}