首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问MyBatis拦截器中的绑定参数

访问MyBatis拦截器中的绑定参数
EN

Stack Overflow用户
提问于 2016-09-19 07:13:46
回答 1查看 1.6K关注 0票数 0

如何读取MyBatis拦截器内的绑定参数?我试图提取这些信息,以便将它们写到日志表中。

指南(http://www.mybatis.org/mybatis-3/configuration.html)没有提到如何获得它们,而JavaDoc (http://www.mybatis.org/mybatis-3/es/apidocs/org/apache/ibatis/mapping/BoundSql.html)没有任何评论。我看到了一个关于构建新BoundSql的例子,但这不是我所需要的。

我试着测试BoundSql.getParameterMappings()和BoundSql.getParameterObject()中存储的内容,但是看起来非常复杂。有JavaType和JdbcType,如果只有一个参数,则ParameterObject不是Map对象。

从BoundSql获取绑定参数的正确方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-21 02:16:27

在查看了MyBatis源代码(其中注释是濒危物种)之后,我了解了MyBatis如何处理绑定参数。但是,这需要对JDBC语句对象的访问,而JDBC语句对象在Interceptor中根本不可用。

然后我做了一些测试,并确定如下:

  1. 如果只有一个参数,BindSql.getParameterObject()将给出参数本身。通过使用BindSql.getParameterMappings()和ParameterMapping.getJavaType(),我可以判断参数是哪个Java类。
  2. 如果有多个参数,BindSql.getParameterObject()将返回一个扩展HashMap的HashMap实例,或者是您使用的DTO的一个实例。使用来自.getProperty()的ParameterMapping作为键或getter名称,您可以一个接一个地处理绑定参数。

如果有人有更好的方法来做这件事,我会洗耳恭听的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39567351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档