自学内容网 自学内容网

[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)!