路逸思 发表于 5 天前

第二天

DTO

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

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

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

分页查询部分中,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语句尽量不用加“;”号)

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

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

方法二消息转换器源码:
重写的是 WebMvcConfigurationSupport 中的方法
/**   * 扩展mvc框架的消息转换器   * 消息转换器:将Controller方法的返回值转换为json格式的字符串响应给页面   * 转换时间格式:全局统一设置时间格式为yyyy-MM-dd HH:mm:ss   * @param converters the list of configured converters to extend   *///设置消息转换器,统一转换时间格式@Overrideprotected void extendMessageConverters(List
页: [1]
查看完整版本: 第二天