59 lines
2.3 KiB
Java
59 lines
2.3 KiB
Java
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和updateTime,UPDATE时仅设置updateTime。
|
||
* </p>
|
||
* @return 配置完成的更新拦截器实例
|
||
*/
|
||
@Bean
|
||
public UpdateInterceptor updateInterceptor() {
|
||
return new UpdateInterceptor();
|
||
}
|
||
|
||
|
||
} |