首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Spring应用程序中的MyBatis文件中设置application.properties配置属性?

如何在Spring应用程序中的MyBatis文件中设置application.properties配置属性?
EN

Stack Overflow用户
提问于 2016-04-29 13:07:51
回答 3查看 5.9K关注 0票数 4

MyBatis 弹簧启动器文档列出了可以在application.properties文件中设置的属性,该列表包括:

配置:一个MyBatis配置bean。关于可用属性,请参阅MyBatis参考页

这并不是很明显,但我认为它的意思是,你可以添加这样的东西:

代码语言:javascript
复制
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。我会把这个问题放在这里,以防它是种族问题,以后又开始失败,但现在我的问题似乎神秘地消失了。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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/>下的示例指定为示例

这肯定能行。

票数 1
EN

Stack Overflow用户

发布于 2016-05-04 10:59:21

将这个<setting name="jdbcTypeForNull" value="OTHER"/>添加到您的mybatis-config.xml中,它应该工作得很好。否则,使用oracle/mysql作为db对您的查询非常好。

代码语言:javascript
复制
   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列表提供的。如果感觉约束有时为空/空,则需要将其添加到每个约束中。

票数 0
EN

Stack Overflow用户

发布于 2021-05-06 19:41:40

如果您正在使用application.yml,请尝试

代码语言:javascript
复制
mybatis:
  configuration:
    jdbc-type-for-null: 'NULL'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36939200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档