MyBatis 弹簧启动器文档列出了可以在application.properties文件中设置的属性,该列表包括:
配置:一个MyBatis配置bean。关于可用属性,请参阅MyBatis参考页
这并不是很明显,但我认为它的意思是,你可以添加这样的东西:
mybatis.configuration.jdbcTypeForNull=VARCHAR这似乎是可行的;当然,如果我将VARCHAR更改为不是枚举JdbcType的有效值,则会得到一个错误。然而,它似乎也没有得到我的设置。
当我使用调试器时,我可以看到在MybatisProperties.setConfiguration()之前调用了Configuration.setJdbcTypeForNull(),这意味着使用的是默认值(JdbcType.OTHER),而不是我试图设置的值。
我是误解了这个功能应该如何使用,还是这是一个bug?还有人像这样设置配置值吗?在其他地方,我只能看到使用XML文件的示例,如果可能的话,我宁愿避免使用XML文件。
好吧,这太尴尬了
我放弃了尝试在application.properties中使用application.properties属性,而求助于我试图避免的XML配置,但刚才,在这里看到了一些有用的建议之后,我回到了代码,将它从XML配置改为让mybatis.configuration.jdbcTypeForNull=NULL并重新运行我的测试,在以前的相同条件下肯定失败了,但现在它通过了。
我不知道与之前有什么不同--调试我看到的行为与上面提到的相同--配置bean似乎在启动时将jdbcTypeForNull参数设置为其他参数,但是当在查询期间访问它时,它再次为NULL。我会把这个问题放在这里,以防它是种族问题,以后又开始失败,但现在我的问题似乎神秘地消失了。
发布于 2016-05-01 02:16:50
如果要使用mybatis.configuration.jdbcTypeForNull,请记住不要同时指定configLocation属性。否则,设置将被擦除为默认设置。
正如spring引导所做的那样,MybatisProperties.setConfiguration()在Configuration.setJdbcTypeForNull()真正正确之前被调用。因为spring引导尝试将configuration设置为MybatisProperties,但发现其成员configuration为null,所以spring引导将实例化一个新的Configuration并立即将其分配给MybatisProperties。之后,spring将尝试将所有mybatis.configuration.*分配给MybatisProperties的这个成员。
如果要使用XML来配置<setting name="jdbcTypeForNull" value="VARCHAR"/>,则需要将元素<settings/>下的示例指定为示例。
这肯定能行。
发布于 2016-05-04 10:59:21
将这个<setting name="jdbcTypeForNull" value="OTHER"/>添加到您的mybatis-config.xml中,它应该工作得很好。否则,使用oracle/mysql作为db对您的查询非常好。
insert into students
(id,name,class,date_of_joining)
values
(#{id,jdbcType=INTEGER},#{class,jdbcType=TIMESTAMP},
#{class,jdbcType=NVARCHAR},#{date_of_joining,jdbcType=TIMESTAMP})这是由jdbcTypes列表提供的。如果感觉约束有时为空/空,则需要将其添加到每个约束中。
发布于 2021-05-06 19:41:40
如果您正在使用application.yml,请尝试
mybatis:
configuration:
jdbc-type-for-null: 'NULL'https://stackoverflow.com/questions/36939200
复制相似问题