idea打印sql的插件_[Mybatis]-[基础支持层]-插件-自定义简易SQL打印插件

5be225db0f32b0136c014f339c5b9174.png
该系列文章针对 Mybatis 3.5.1 版本

在 mybatis 中允许针对 SQL 在执行前后进行扩展操作,而这些扩展操作也叫做插件。

在 Mybaits 中允许用插件来拦截的方法包括:

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

实现一个 plugin 的 步骤如下

step1、插件实现类实现了 Interceptor 接口

step2、通过注解 @Intercepts 指定了该插件需要拦截的对象

step3、mybatis-config.xml 中的 <plugins> 下配置插

自定义简易 SQL 打印插件

简易 SQL 打印插件,忽略细节

思路

SQL 在 Mybatis 启动完成后已经被加载到了 Configuration 对象中,所以无论是 ExecutorParameterHandlerResultSetHandlerStatementHandler 哪一种情况下的拦截,只要持有了Configuration 对象也就相当于有了执行 SQL,而SQL 参数也是一样的,而在 Mybatis 运行期间 Configuration 对象会伴随整个执行流程,包括 ExecutorParameterHandlerResultSetHandlerStatementHandler 等环节。

在 Mybatis 中执行的处理流程无论是需要参数处理或者结果集处理,最后所有的方法都会经由 Executor 所有,只需要拦截 Executor 对象即可。

针对 SQL 的打印,及其结果打印,只针对增删改查方法,而在 Executor 中,增删改由 Executor#update 完成,查则由 Executor#query 实现。

所以针对 SQL 的打印只需要拦截 Executor#updateExecutor#query方法即可

代码实现

step1、创建插件类 PrintSqlPlugin 并实现 Interceptor 接口

step2、追加注解 @Intercepts 指定拦截对象

方法都有重载的方法,需要指定多个特定的参数来特指特定的方法,这里为演示案例不写全

step 1、和step 2 实现后的代码结构如下:
代码实现如下:

d9741dd1d5ee0bc2cfad1fdae9b75247.png

Interceptor#interceptor部分代码如下:

6ae4e9741b25d9a2c85ec931f2c2d209.png

主体执行逻辑(具体实现不展开)

  • 1、获取执行 SQL。(如:select * from user_info where id = ?
  • 2、获取执行 SQL 对应的参数。(如:param1 = 1)
  • 3、将SQL 对照对应的参数进行拼接,并打印相关SQL数据。(如:select * from user_info where id = 1)
  • 4、调用原有对象 target 执行sql查询,并获得结果集
  • 5、打印结果数据

step3、在 mybatis-config.xml 中配置

18a243737fbb5c55f3b90e5b38334d4b.png

测试,控制台打印日志如下

3da9fcafba12f2856160824287d4c86d.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在IDEA中使用Mybatis-Plus件的步骤如下: 1. 首先,在你的项目中添加Mybatis-Plus的依赖。可以在项目的pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>最新版本号</version> </dependency> ``` 2. 然后,配置Mybatis-Plus的相关配置。在项目的配置文件(比如application.properties或application.yml)中添加以下配置: ```yaml # Mybatis-Plus配置 mybatis-plus: # mapper文件的位置 mapper-locations: classpath*:/mapper/**/*.xml # 实体类所在的包路径 typeAliasesPackage: com.example.entity ``` 3. 接下来,创建实体类和Mapper接口。Mybatis-Plus会根据实体类自动生成对应的Mapper接口和SQL语句。你只需要创建实体类,并在实体类上添加相应的注解,比如@Table、@Id等。 4. 最后,在你的代码中使用Mybatis-Plus的API进行数据库操作。Mybatis-Plus提供了一些常用的方法,比如insert、select、update等,可以直接调用这些方法进行数据库操作,而无需编写繁琐的SQL语句。 总结起来,使用Mybatis-Plus件可以简化Mybatis的开发流程,减少了编写XML文件的工作量,提高了开发效率。\[1\] #### 引用[.reference_title] - *1* [idea 使用 mybatis plus](https://blog.csdn.net/panda_225400/article/details/120517692)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值