TypeHandlers类型转换器
- mybatis在初始化时已注册自带默认TypeHandler保存在Configuration配置类
- 实现TypeHandler接口注入Configuration,可扩展额外的类型转换
ObjectFactory实体类实例工厂
- 从结果集转实体对象都需要通过ObjectFactory创建实例
- Mybatis默认使用DefaultObjectFactory
- 可集成DefObjFactory扩展功能
- ObjectFactory先于TypeHandler被调用
Plugins(JDK动态代理+责任链实现)
@Intercepts({@Signature(
type = Executor.class,
method = "query",
args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class}
), @Signature(
type = Executor.class,
method = "query",
args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class, CacheKey.class, BoundSql.class}
)})
public class PageInterceptor implements Interceptor {}
- @Signature 标记实现类
- type= Executor.class,ParameterHandler.class,ResultSetHandler.class,StatementHandler.class
- method=
- Executor
- update,query,flushStatements,commit,rollback,getTransaction,close,isClosed
- ParameterHandler
- getParameterObject,setParameters
- ResultSetHandler
- handleResultSets,handleOutputParameters
- StatementHandler
- prepare,parameterize,batch,update,query
- args: 对应方法的参数类型
Mybatis增强
- Mybatis-Generator
- 通用Mapper
- mybatis-plus