[springboot]分页查询与消息转化器
目录
分页查询
需要先添加maven依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.6</version>
</dependency>
在controller层添加page方法,并调用service层的查询方法
/**
* 员工分页查询
*
* @param name 员工姓名
* @param page 页码
* @param pageSize 每页记录数
* @return
*/
@GetMapping("/page")
@ApiOperation("员工分页查询")
public Result<PageResult> page(String name, int page, int pageSize) {
log.info("员工分页查询,参数为:{},{},{}", name, page, pageSize);
PageResult pageResult = employeeService.pageQuery(name, page, pageSize);
return Result.success(pageResult);
}
service层的实现:
需要先使用PageHelper.startPage方法开启分页,然后执行查询过程,最后将list转为Page对象返回即可
/**
* 员工分页查询
*
* @param name 员工姓名
* @param page 页码
* @param pageSize 每页记录数
* @return
*/
public PageResult pageQuery(String name, int page, int pageSize) {
// 设置分页参数
PageHelper.startPage(page, pageSize);
List<Employee> list = employeeMapper.pageQuery(name);
Page<Employee> pageData = (Page<Employee>) list;
return new PageResult(pageData.getTotal(), pageData.getResult());
}
具体过程图
消息转化器
在数据库中时间的储存为LocalDateTime类型,如果直接返回给前端其实是不符合我们的阅读习惯的。使用spring MVC的消息转换器可以全局处理这些时间类型
首先我们需要实现一个对象映射器,基于jackson将Java对象转为json,或者将json转为Java对象
/**
* 对象映射器:基于jackson将Java对象转为json,或者将json转为Java对象
* 将JSON解析为Java对象的过程称为 [从JSON反序列化Java对象]
* 从Java对象生成JSON的过程称为 [序列化Java对象到JSON]
*/
public class JacksonObjectMapper extends ObjectMapper {
public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
//public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm";
public static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";
public JacksonObjectMapper() {
super();
//收到未知属性时不报异常
this.configure(FAIL_ON_UNKNOWN_PROPERTIES, false);
//反序列化时,属性不存在的兼容处理
this.getDeserializationConfig().withoutFeatures(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
SimpleModule simpleModule = new SimpleModule()
.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))
.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))
.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)))
.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))
.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))
.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)));
//注册功能模块 例如,可以添加自定义序列化器和反序列化器
this.registerModule(simpleModule);
}
}
然后在配置类中扩展消息转换器,将上面的对象映射器添加到converters
/**
* 扩展消息转换器
* @param converters
*/
@Override
protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
// 创建消息转换器对象
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
// 给消息转换器设置对象映射器,将Java对象转换为JSON字符串
converter.setObjectMapper(new JacksonObjectMapper());
converters.add(0, converter);
}
最终就可以将时间格式化后再给前端
原文地址:https://blog.csdn.net/weixin_46264149/article/details/149111308
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!