Files
exam-jyt/exam-api/src/main/java/com/bc/exam/config/MybatisConfig.java
T
2026-06-18 22:44:37 +08:00

59 lines
2.3 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package com.bc.exam.config;
import com.bc.exam.aspect.mybatis.QueryInterceptor;
import com.bc.exam.aspect.mybatis.UpdateInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* MyBatis框架全局配置类
* <p>
* 负责配置MyBatis的核心组件:
* 1. 通过@MapperScan注解自动扫描指定包路径下的Mapper接口,避免逐个注册
* 2. 注册查询拦截器(QueryInterceptor),用于自动填充通用查询条件(如用户ID过滤)
* 3. 注册更新拦截器(UpdateInterceptor),用于自动填充createTime和updateTime字段
* </p>
* <p>注意:拦截器的注册顺序很重要,QueryInterceptor继承自分页拦截器,需要优先注册以保证分页逻辑正常执行。</p>
*
* @Description 描述:Mybatis过滤器配置 注意:必须按顺序进行配置,否则容易出现业务异常
* @Author A贾宇婷034244310
* @Date 20260616
*/
@Configuration
@MapperScan("com.bc.exam.modules.**.mapper") // 自动扫描所有模块下的mapper包,注册为MyBatis Mapper接口
public class MybatisConfig {
/**
* 注册数据查询拦截器
* <p>
* 该拦截器继承自MyBatis-Plus的分页拦截器(PaginationInterceptor),
* 同时扩展了自定义的查询条件自动填充功能(如将SQL中的{{userId}}占位符替换为当前登录用户ID)。
* limit设置为-1表示默认不限制查询条数,由业务层自行控制分页。
* </p>
* @return 配置完成的查询拦截器实例
*/
@Bean
public QueryInterceptor queryInterceptor() {
QueryInterceptor query = new QueryInterceptor();
// 设置默认查询条数限制为-1(不限制),实际分页由业务层Page对象控制
query.setLimit(-1L);
return query;
}
/**
* 注册数据更新拦截器
* <p>
* 拦截所有INSERT和UPDATE操作,自动为实体对象的createTime和updateTime字段赋值。
* INSERT时同时设置createTime和updateTimeUPDATE时仅设置updateTime。
* </p>
* @return 配置完成的更新拦截器实例
*/
@Bean
public UpdateInterceptor updateInterceptor() {
return new UpdateInterceptor();
}
}