温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java mybatis怎么调试

发布时间:2026-10-13 20:59:39 来源:亿速云 阅读:115 作者:小樊 栏目:编程语言

在 Java 中使用 MyBatis 调试,通常可以从 日志、断点、源码、插件 几个层面来做。下面按“从简单到深入”的方式说明。


一、最常用:开启 MyBatis 日志(看 SQL)

1️⃣ 使用 MyBatis 自带日志

在 mybatis-config.xml 中:

<settings>
    <setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>

控制台会打印:

  • 执行的 SQL
  • 参数
  • 返回结果

2️⃣ 使用 SLF4J + Logback(推荐)

logback.xml

<logger name="org.mybatis" level="DEBUG"/>
<logger name="com.xxx.mapper" level="DEBUG"/>

这样能看到:

  • Mapper 接口调用
  • 实际 SQL 和参数

3️⃣ 只打印 SQL(不打印结果)

<logger name="org.apache.ibatis.jdbc" level="DEBUG"/>

二、在 Mapper 接口打断点(最直观)

1️⃣ 断点打在哪?

✅ Mapper 接口方法上

User selectById(Long id);

⚠️ 注意:

  • MyBatis 是 代理对象
  • 不能直接进接口实现
  • 断点会停在 MapperProxy

2️⃣ 单步调试进入

调试时:

  • Step Into (F7)
  • 会进入:
    MapperProxy.invoke()
    → MapperMethod.execute()
    → SqlSession.select()
    

三、调试 SqlSession / Executor(深入)

如果你想看:

  • SQL 怎么拼的
  • 参数是怎么绑定的

关键类(可打断点)

类 作用
DefaultSqlSession SQL 执行入口
BaseExecutor 执行器
PreparedStatementHandler SQL 预处理
ParameterHandler 参数绑定
BoundSql 最终 SQL

断点建议:

PreparedStatementHandler.parameterize()
BoundSql.getSql()

四、XML Mapper 调试技巧

1️⃣ 检查 SQL 是否生效

在 XML 中临时写死参数:

SELECT * FROM user WHERE id = 1

2️⃣ 开启 SQL 格式化

<setting name="logImpl" value="STDOUT_LOGGING"/>

或在日志中观察换行。


五、使用 MyBatis 插件(强烈推荐)

✅ MyBatis Log Plugin(IDEA)

  • 直接显示 可执行 SQL
  • 自动替换 ? 为真实参数

示例:

SELECT * FROM user WHERE id = 1

比原生日志直观 10 倍。


六、Spring + MyBatis 调试注意

1️⃣ Mapper 是代理对象

调试时你会看到:

MapperProxy@1234

这是正常的。


2️⃣ 事务影响

  • 没提交事务,数据库看不到
  • 可临时:
@Transactional(propagation = Propagation.NOT_SUPPORTED)

七、常见问题调试思路

❓ SQL 不对?

✅ 看 BoundSql.getSql()

❓ 参数没传进去?

✅ 看 ParameterHandler.setParameters()

❓ 返回 null?

✅ 看:

  • resultMap
  • 数据库字段名
  • 驼峰配置
<setting name="mapUnderscoreToCamelCase" value="true"/>

八、一句话总结

调试 MyBatis = 日志看 SQL + 断点看代理 + 源码看执行

如果你愿意,可以告诉我:

  • 用的是 MyBatis 还是 MyBatis-Plus
  • 是 XML 还是 注解
  • 遇到的 具体问题

我可以直接给你针对性调试方案。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手