@Order(value=-2147483648)
@Intercepts(value=@Signature(type=org.apache.ibatis.executor.Executor.class,method="query",args={org.apache.ibatis.mapping.MappedStatement.class,java.lang.Object.class,org.apache.ibatis.session.RowBounds.class,org.apache.ibatis.session.ResultHandler.class}))
public class JoinInterceptor
extends Object
implements org.apache.ibatis.plugin.Interceptor
| 限定符和类型 | 类和说明 |
|---|---|
private static class |
JoinInterceptor.FieldTransAnnotationInfo
FieldTrans注解信息
|
private static class |
JoinInterceptor.ManyToManyAnnotationInfo
ManyToMany注解信息
|
private static class |
JoinInterceptor.OneToOneAnnotationInfo
OneToOne注解信息
|
| 限定符和类型 | 字段和说明 |
|---|---|
private static Map<String,Map<org.apache.ibatis.session.Configuration,org.apache.ibatis.mapping.MappedStatement>> |
MS_CACHE
缓存MappedStatement
|
private MybatisPlusJoinConfig |
mybatisPlusJoinConfig |
| 构造器和说明 |
|---|
JoinInterceptor() |
| 限定符和类型 | 方法和说明 |
|---|---|
private void |
addResultMapSafely(org.apache.ibatis.session.Configuration configuration,
org.apache.ibatis.mapping.ResultMap resultMap,
String id)
安全地添加ResultMap
|
private String |
buildMappedStatementId(org.apache.ibatis.mapping.MappedStatement ms,
SupportJoinWrapper joinWrapper,
Class<?> classType)
构建MappedStatement ID
|
private org.apache.ibatis.mapping.MappedStatement |
buildNewMappedStatement(org.apache.ibatis.mapping.MappedStatement ms,
String id,
SupportJoinWrapper joinWrapper,
Class<?> classType)
构建新的MappedStatement
|
private String |
buildResultMapId(org.apache.ibatis.mapping.MappedStatement ms,
SupportJoinWrapper joinWrapper,
Class<?> classType)
构建ResultMap ID
|
private org.apache.ibatis.mapping.ResultMapping |
buildResultMapping(org.apache.ibatis.session.Configuration configuration,
FieldMapping fieldMapping,
Class<?> clz)
构建单个结果映射
|
private List<org.apache.ibatis.mapping.ResultMapping> |
buildResultMappings(org.apache.ibatis.session.Configuration configuration,
List<FieldMapping> fieldMappings,
Class<?> clz)
构建结果映射
|
private Object |
convertToVO(Object source,
Class<?> targetClass)
将实体对象转换为VO对象
使用Spring的BeanUtils进行属性拷贝
|
private org.apache.ibatis.mapping.MappedStatement |
createMappedStatement(org.apache.ibatis.mapping.MappedStatement ms,
SupportJoinWrapper joinWrapper,
Class<?> classType)
创建新的MappedStatement
|
private org.apache.ibatis.mapping.ResultMap |
createResultMap(org.apache.ibatis.mapping.MappedStatement ms,
SupportJoinWrapper joinWrapper,
Class<?> classType)
创建ResultMap,处理并发情况
|
private Class<?> |
getFieldType(Class<?> clazz,
String fieldName)
获取字段类型
|
private Class<?> |
getListGenericType(Field field)
获取List字段的泛型类型
使用MyBatis-Plus的GenericTypeUtils获取泛型类型
|
Object |
intercept(org.apache.ibatis.plugin.Invocation invocation) |
private boolean |
isUseMsCache() |
private void |
processAnnotationMapping(Object result,
Class<?> returnClass)
处理注解映射 (OneToOne 和 ManyToMany)
|
private void |
processFieldTransAnnotation(Collection<?> dataList,
Map<String,JoinInterceptor.FieldTransAnnotationInfo> fieldTransMap,
Map<String,Field> fieldMap)
处理FieldTrans注解
从子表中查询数据,提取指定字段并映射到当前对象的字段上
|
private void |
processManyToManyAnnotation(Collection<?> dataList,
Map<String,JoinInterceptor.ManyToManyAnnotationInfo> manyToManyMap,
Map<String,Field> fieldMap)
处理ManyToMany注解
|
private void |
processManyToManyMapping(org.apache.ibatis.session.Configuration configuration,
String baseId,
SupportJoinWrapper joinWrapper,
List<org.apache.ibatis.mapping.ResultMapping> resultMappings)
处理多对多映射
|
private void |
processOneToOneAnnotation(Collection<?> dataList,
Map<String,JoinInterceptor.OneToOneAnnotationInfo> oneToOneMap,
Map<String,Field> fieldMap)
处理OneToOne注解
|
private void |
processOneToOneMapping(org.apache.ibatis.session.Configuration configuration,
String baseId,
SupportJoinWrapper joinWrapper,
List<org.apache.ibatis.mapping.ResultMapping> resultMappings)
处理一对一映射
|
@Autowired(required=false) private MybatisPlusJoinConfig mybatisPlusJoinConfig
public Object intercept(org.apache.ibatis.plugin.Invocation invocation) throws Throwable
intercept 在接口中 org.apache.ibatis.plugin.InterceptorThrowableprivate org.apache.ibatis.mapping.MappedStatement createMappedStatement(org.apache.ibatis.mapping.MappedStatement ms,
SupportJoinWrapper joinWrapper,
Class<?> classType)
private String buildMappedStatementId(org.apache.ibatis.mapping.MappedStatement ms, SupportJoinWrapper joinWrapper, Class<?> classType)
private org.apache.ibatis.mapping.MappedStatement buildNewMappedStatement(org.apache.ibatis.mapping.MappedStatement ms,
String id,
SupportJoinWrapper joinWrapper,
Class<?> classType)
private org.apache.ibatis.mapping.ResultMap createResultMap(org.apache.ibatis.mapping.MappedStatement ms,
SupportJoinWrapper joinWrapper,
Class<?> classType)
private void processOneToOneMapping(org.apache.ibatis.session.Configuration configuration,
String baseId,
SupportJoinWrapper joinWrapper,
List<org.apache.ibatis.mapping.ResultMapping> resultMappings)
private void processManyToManyMapping(org.apache.ibatis.session.Configuration configuration,
String baseId,
SupportJoinWrapper joinWrapper,
List<org.apache.ibatis.mapping.ResultMapping> resultMappings)
private void addResultMapSafely(org.apache.ibatis.session.Configuration configuration,
org.apache.ibatis.mapping.ResultMap resultMap,
String id)
private String buildResultMapId(org.apache.ibatis.mapping.MappedStatement ms, SupportJoinWrapper joinWrapper, Class<?> classType)
private List<org.apache.ibatis.mapping.ResultMapping> buildResultMappings(org.apache.ibatis.session.Configuration configuration, List<FieldMapping> fieldMappings, Class<?> clz)
private org.apache.ibatis.mapping.ResultMapping buildResultMapping(org.apache.ibatis.session.Configuration configuration,
FieldMapping fieldMapping,
Class<?> clz)
private boolean isUseMsCache()
private void processAnnotationMapping(Object result, Class<?> returnClass)
private void processOneToOneAnnotation(Collection<?> dataList, Map<String,JoinInterceptor.OneToOneAnnotationInfo> oneToOneMap, Map<String,Field> fieldMap)
private void processManyToManyAnnotation(Collection<?> dataList, Map<String,JoinInterceptor.ManyToManyAnnotationInfo> manyToManyMap, Map<String,Field> fieldMap)
private void processFieldTransAnnotation(Collection<?> dataList, Map<String,JoinInterceptor.FieldTransAnnotationInfo> fieldTransMap, Map<String,Field> fieldMap)
private Class<?> getListGenericType(Field field)
Copyright © 2025. All rights reserved.