MyBatis Spring Boot Starter documentation列出了可以在application.properties文件中设置的属性,该列表包括:
配置:MyBatis配置bean。关于可用属性,请参阅MyBatis参考页面
从那里开始并不是很明显,但我认为它的建议是你可以添加这样的东西:
mybatis.configuration.jdbcTypeForNull=VARCHAR
这似乎有效;当然,如果我为枚举JdbcType的有效值更改VARCHAR
,我会收到错误。但是,它似乎也没有恢复我的设置。
当我使用调试器时,我可以看到在{/ em> MybatisProperties.setConfiguration()
之前调用了Configuration.setJdbcTypeForNull()
,,这意味着使用了默认值(JdbcType.OTHER
)而不是我试图设置的值。
我是否误解了应该如何使用此功能,或者这是一个错误?是否有其他人设置这样的配置值?在其他地方,我只能看到使用XML文件的示例,如果可能的话我宁愿避免使用。
我放弃尝试使用configuration
中的application.properties
属性,并使用了我试图避免使用的XML配置,但刚才,在这里看到了一些有用的建议,我去了回到我的代码,将它从XML配置改回到mybatis.configuration.jdbcTypeForNull=NULL
并重新运行我的测试,这在以前的相同条件下肯定是失败的,但现在它已经过去了。
我不知道与以前有什么不同 - 调试我看到了与上面提到的相同的行为 - 配置bean 似乎以在将jdbcTypeForNull参数设置回OTHER期间启动,但是当它在查询期间被访问时它再次为NULL。我会在这里留下这个问题,以防它出现竞争状态,之后又开始失败,但是现在我的问题似乎已经神秘地消失了。
答案 0 :(得分:0)
如果您要使用mybatis.configuration.jdbcTypeForNull
,请记住不要同时指定configLocation
属性。否则,您的设置将被删除为默认值。
正如Spring引导所做的那样,在MybatisProperties.setConfiguration()
真正正确之前调用Configuration.setJdbcTypeForNull()
。因为spring boot尝试将configuration
设置为MybatisProperties
,但发现其成员configuration
为null,因此spring boot将实例化一个新的Configuration
并将其分配给MybatisProperties
立即。之后,spring boot将尝试将所有mybatis.configuration.*
分配给MybatisProperties
的此成员。
如果您要使用XML配置mybatis,则需要在元素<setting name="jdbcTypeForNull" value="VARCHAR"/>
下指定<settings/>
为example。
这肯定有用。
答案 1 :(得分:0)
将此<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})
以下是mybatis提供的list of jdbcTypes。如果您觉得约束有时可以为空/ null,则需要将其添加到每个约束中。
答案 2 :(得分:0)
如果你使用 application.yml 试试
leave