mybatis 与hibernate对比
hibernate为全自动orm框架,将java对象与数据库表关联对应了起来,Hibernate的概念中Java对象拥有三种状态。瞬时状态,游离状态,持久状态,当这些状态发生改变时,Hibernate框架会自动的对数据库发送sql语句,从而完成对数据库的操作
mybatis为半orm框架,需要手写sql,只提供sql映射
mybatis运行流程
mybatis 核心对象
插件开发
拦截器
需实现Interceptor接口
@Intercepts(value={
@Signature(
type = Executor.class, // 只能是: StatementHandler | ParameterHandler | ResultSetHandler | Executor 类或者子类
method = "query", // 表示:拦截Executor的query方法
args = { // query 有很多的重载方法,需要通过方法签名来指定具体拦截的是那个方法
MappedStatement.class,
Object.class,
RowBounds.class,
ResultHandler.class
}
/**
* type:标记需要拦截的类
* method: 标记是拦截类的那个方法
* args: 标记拦截类方法的具体那个引用(尤其是重载时)
*/
)})
@Slf4j
public class Plugin implements Interceptor {
@Override
public Object intercept(Invocation invocation) throws InvocationTargetException, IllegalAccessException {
log.info("进入拦截");
return invocation.proceed();
}
}
mybatis-config.xml中配置
<plugins>
<plugin interceptor="com.gs.mybatis.sample.Plugin"></plugin>
</plugins>
需要排在environments节点前面