idea安装mybatis插件

idea安装mybatis插件

大家好,又见面了,我是你们的朋友全栈君。

MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:

Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)ParameterHandler (getParameterObject, setParameters)ResultSetHandler (handleResultSets, handleOutputParameters)StatementHandler (prepare, parameterize, batch, update, query)

这些类中方法的细节可以通过查看每个方法的签名来发现,或者直接查看 MyBatis 的发行包中的源代码。 假设你想做的不仅仅是监控方法的调用,那么你应该很好的了解正在重写的方法的行为。 因为如果在试图修改或重写已有方法的行为的时候,你很可能在破坏 MyBatis 的核心模块。 这些都是更低层的类和方法,所以使用插件的时候要特别当心。

通过 MyBatis 提供的强大机制,使用插件是非常简单的,只需实现 Interceptor 接口,并指定了想要拦截的方法签名即可。

自定义插件需求:

把Mybatis所有执行的sql都记录下来。

代码实现

通过对 MyBatis org.apache.ibatis.executor.statement.StatementHandler 中的prepare 方法进行拦截即可。

prepare 方法签名如下:

Statement prepare(Connection connection, Integer transactionTimeout) throws SQLException;

自定义一个类,实现 org.apache.ibatis.pluginInterceptor 接口,代码如下:

package com.bytebeats.mybatis3.interceptor;import org.apache.ibatis.executor.statement.StatementHandler;import org.apache.ibatis.mapping.BoundSql;import org.apache.ibatis.plugin.*;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.sql.Connection;import java.util.Properties;/** * ${DESCRIPTION} * * @author Ricky Fung * @date 2017-02-17 11:52 */@Intercepts({ @Signature(type = StatementHandler.class, method = “prepare”, args = { Connection.class, Integer.class}) })public class SQLStatsInterceptor implements Interceptor { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Override public Object intercept(Invocation invocation) throws Throwable { StatementHandler statementHandler = (StatementHandler) invocation.getTarget(); BoundSql boundSql = statementHandler.getBoundSql(); String sql = boundSql.getSql(); logger.info(“mybatis intercept sql:{}”, sql); return invocation.proceed(); } @Override public Object plugin(Object target) { return Plugin.wrap(target, this); } @Override public void setProperties(Properties properties) { String dialect = properties.getProperty(“dialect”); logger.info(“mybatis intercept dialect:{}”, dialect); }}

这样一个插件就开发完成了,接下来需要在 mybatis-config.xml 文件中增加 plugins节点,完整配置如下:

spring-mybatis.xml

maven依赖 1.74.2.7.RELEASEUTF-8org.springframeworkspring-core${spring.version}commons-loggingcommons-loggingorg.springframeworkspring-beans${spring.version}org.springframeworkspring-context${spring.version}org.springframeworkspring-context-support${spring.version}org.springframeworkspring-webmvc${spring.version}org.springframeworkspring-tx${spring.version}org.springframeworkspring-jdbc${spring.version}org.springframeworkspring-test${spring.version}javax.servletjavax.servlet-api3.1.0mysqlmysql-connector-java5.1.26com.alibabadruid1.0.25org.mybatismybatis3.4.1org.mybatismybatis-spring1.3.0org.slf4jslf4j-api1.7.21org.slf4jlog4j-over-slf4j1.7.21org.slf4jjcl-over-slf4j1.7.21ch.qos.logbacklogback-core1.1.7ch.qos.logbacklogback-classic1.1.7junitjunit${junit.version}test参考资料

MyBatis 插件(plugins)教程:http://www.mybatis.org/mybatis-3/zh/configuration.html#plugins

源代码下载

mybatis3-best-practice

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/189043.html原文链接:https://javaforall.cn


比丘资源网 » idea安装mybatis插件

发表回复

提供最优质的资源集合

立即查看 了解详情