php的中文全称是什么mybatis(3)—⾃定义(上)基础使⽤
mybatis⾃定义(⼀)基本使⽤
mybatis⾃定义(⼆)对象详解
1. 注解
1. mybatis⾃定义实现步骤:
1. 实现org.apache.ibatis.plugin.Interceptor接⼝。
2. 添加注解org.apache.ibatis.plugin.Intercepts。
3. 配置⽂件中添加。
2. 在mybatis中可被拦截的类型有四种(按照拦截顺序):
1. Executor:拦截执⾏器的⽅法。
2. ParameterHandler:拦截参数的处理。
3. ResultHandler:拦截结果集的处理。
4. StatementHandler:拦截Sql语法构建的处理。
1. 不同拦截类型执⾏顺序:
figuration.Aa#plugin打印对象顺序.png
2. 多个插件拦截的顺序?
image.png
需要注意的是,因为Aa和Bb均是拦截的StatementHandler对象,所以B在此获取StatementHandler的时候,获取的是代理对象。
import org.apache.ibatis.session.Configuration;
简洁论坛网站模板import org.apache.ibatis.session.ResultHandler;
import org.apache.ibatis.session.RowBounds;
import org.pe.TypeHandlerRegistry;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
DateFormat;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.Properties;
@Intercepts({@Signature(type = Executor.class, method = "update", args = {MappedStatement.class, Object.class}),        @Signature(type = Executor.class, method = "query", args = {MappedStatement.class, Object.class,
RowBounds.class, ResultHandler.class})})versant模拟
public class MybatisLogInterceptor implements Interceptor {
private Properties properties;
private static final Logger logger = Logger(MybatisLogInterceptor.class);
public Object intercept(Invocation invocation) throws Throwable {
long start = 0L;
String sqlId = "";
BoundSql boundSql = null;
Configuration configuration = null;
Object returnValue = null;
try {
MappedStatement mappedStatement = (MappedStatement) Args()[0];mysql语句的执行顺序
sqlId = Id();
ains("History") || ains("Tmp")){
return invocation.proceed();
}
Object parameter = null;
if (Args().length > 1) {
parameter = Args()[1];
}
boundSql = BoundSql(parameter);
configuration = Configuration();
start = System.currentTimeMillis();
} catch (Exception e) {
logger.debug("Mybatis前置处理异常原因:", e);
<("Mybatis前置处理异常原因:" + e);
}
returnValue = invocation.proceed();
try {
long end = System.currentTimeMillis();
long time = (end - start);
String sql = getSql(configuration, boundSql, sqlId, time);
// if (time >= Config.SQL_WARN_TIME) {
// logger.warn(sql);
// } else {
// logger.info(sql);
// }
} catch (Exception e) {
logger.debug("Mybatis后置处理异常原因:", e);
<("Mybatis后置处理异常原因:" + e);
}
return returnValue;
idea是什么词性
}
public static String getSql(Configuration configuration, BoundSql boundSql, String sqlId, long time) {
String sql = showSql(configuration, boundSql);网络unreachable
StringBuilder str = new StringBuilder(100);
str.append("【sqlId】").append(sqlId);
str.append("【SQL耗时-").append(time).append("-毫秒】");
str.append("【SQL】").append(sql);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。