【发布时间】:2016-08-24 15:58:48
【问题描述】:
MyBatis Spring Boot Starter documentation 列出了可以在 application.properties 文件中设置的属性,该列表包括:
configuration:一个 MyBatis 配置 bean。关于可用属性见 MyBatis 参考页
从那里不是很明显,但我认为它的建议是你可以添加这样的东西:
mybatis.configuration.jdbcTypeForNull=VARCHAR
这似乎有效;当然,如果我将 VARCHAR 更改为不是枚举 JdbcType 的有效值,我会收到错误消息。但是,它似乎也没有选择我的设置。
当我使用调试器时,我可以看到MybatisProperties.setConfiguration()被调用,之前Configuration.setJdbcTypeForNull(),这意味着使用默认值(JdbcType.OTHER)而不是我的值'我正在尝试设置。
我是否误解了应该如何使用此功能,或者这是一个错误?有没有人像这样设置配置值?在其他地方,我只能看到使用 XML 文件的示例,如果可能的话,我宁愿避免这样做。
嗯,这很尴尬
我放弃了尝试使用application.properties 中的configuration 属性,并使用了我试图避免的XML 配置,但是刚才在这里看到了一些有用的建议,我回到了我的代码,将其从 XML 配置更改回 mybatis.configuration.jdbcTypeForNull=NULL 并重新运行我的测试,在之前的相同条件下肯定失败了,但现在它通过了。
我不知道与以前有什么不同 - 调试我看到与上述相同的行为 - 配置 bean 似乎 在启动期间将 jdbcTypeForNull 参数设置回 OTHER,但是当它在查询期间访问它再次为 NULL。我将把这个问题留在这里,以防它是一个竞争条件并且它稍后再次开始失败,但现在我的问题似乎已经神秘地消失了。
【问题讨论】:
-
您是否尝试过将此
<setting name="callSettersOnNulls" value="true"/>添加到您的mybatis-config.xml中,这将允许您获得空值或空值而不会出错。 -
当您从数据库中获取空值时,此设置不是吗?我正在查看的情况是在插入中将列设置为空。
-
我的错误我很困惑。您是否使用 bean 作为参数类型。
标签: java spring spring-boot mybatis spring-mybatis