MyBatis 有没有类似Hibernate 的"dirty checking mechanism"?

Is there an "dirty checking mechanism" for MyBatis similar to that in Hibernate?

Hibernate 有一个 dirty-checking mechanism 可以自动检测更改并生成适当的 UPDATE 查询。

MyBatis有没有类似的东西?

我知道在 MyBatis 中 Java-Entity 和 DB-table 之间没有任何一对一的映射,但我们确实指定了 resultMaps。 MyBatis 中有没有什么方法可以智能地计算对象的差异并触发适当的 UPDATE 查询,而无需开发人员显式编写它们?

不行,mybatis不支持这个。 mybatis 中没有查询生成。 mybatis 是一个工具,可以帮助您更轻松地执行 SQL 并将结果从 JDBC 映射到对象。

正如您所注意到的,mybatis 不会将表映射到实体,而是将结果集映射到对象。

Mybatis 不维护任何类型的持久性上下文,因此它不跟踪对对象的任何更改 returns(这些对象甚至不需要任何标识符或用户定义的类型)。

您可能还想查看 this question 及其答案,其中更详细地介绍了差异,并提供了有关 mybatis 不支持此功能的原因的更多见解。