第二天

DTO

当需要封装的数据与实体类的属性差别较大时,可以新创建一个DTO来封装数据

image

在获取当前管理员id时,使用到的技术--ThreadLocal

客户端发起的每一次请求都是单独的线程

image

分页查询部分中,PageHelper的startPage方法底层原理

Service层分页查询源码:
/**  
 * 员工信息分页查询  
 * time:2026-03-18  
 *采用PageHelper插件实现分页查询  
 * PageHelper.startPage方法会自动拦截后续的查询操作,并将分页参数传递给MyBatis,MyBatis会根据这些参数生成相应的SQL语句,从而实现分页查询的功能。  
 * @param employeePageQueryDTO  
 * @return  
 */  
 
 
@Override  
public PageResult pageQuery(EmployeePageQueryDTO employeePageQueryDTO) {  
  
    PageHelper.startPage(employeePageQueryDTO.getPage(), employeePageQueryDTO.getPageSize());  
  
    //Page继承了ArrayList,所以它既是一个List集合,又包含了分页相关的信息,如总记录数、总页数等。  
    Page<Employee> page = employeeMapper.pageQuery(employeePageQueryDTO);  
  
    PageResult pageResult = new PageResult(page.getTotal(),page.getResult());  
  
    return pageResult;  
}

上述代码中,调用了PageHelper插件的startPage方法,其底层原理是利用了ThreadLocal存入了对应的值,然后在使用mybatis进行数据库操作时,会动态的添加到sql语句末尾(所以写xml格式的sql语句尽量不用加“;”号)
image

当后端传给前端的时间数据是json格式时,页面显示的时间可能并不是正常的格式

可以用以下两种办法解决:
image

方法二消息转换器源码:

重写的是 WebMvcConfigurationSupport 中的方法

/**  
 * 扩展mvc框架的消息转换器  
 * 消息转换器:将Controller方法的返回值转换为json格式的字符串响应给页面  
 * 转换时间格式:全局统一设置时间格式为yyyy-MM-dd HH:mm:ss  
 * @param converters the list of configured converters to extend  
 *///设置消息转换器,统一转换时间格式  
@Override  
protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {  
    log.info("开始设置消息转换器...");  
    //创建一个新的消息转换器对象  
    MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();  
    //设置对象转换器,底层使用Jackson将Java对象转换为json  
    converter.setObjectMapper(new JacksonObjectMapper());  
    //将上面的消息转换器对象追加到mvc框架的转换器集合中  
    converters.add(0, converter);  
    }
posted @ 2026-03-18 22:30  QinGutaOo0  阅读(13)  评论(0)    收藏  举报