在springboot项目中配置数据库下划线命名映射为java的驼峰命名时出错

这篇具有很好参考价值的文章主要介绍了在springboot项目中配置数据库下划线命名映射为java的驼峰命名时出错。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题

在使用spirngboot集成mybaits的时候,想要开启命名映射,如图配置

# mybatis配置
mybatis:
  type-aliases-package: com.zhong.springcloud.pojo
  config-location: classpath:mybatis/mybatis-config.xml
  mapper-locations: classpath:mybatis/mapper/*.xml
#  命名映射
  configuration:
    map-underscore-to-camel-case: true

项目中配置了mybatis-config.xml
在springboot项目中配置数据库下划线命名映射为java的驼峰命名时出错
mybatis-config.xml文件中的配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
    <settings>
        <!--        开启二级缓存-->
        <setting name="cacheEnabled" value="true"/>
    </settings>
</configuration>

错误信息

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method ‘sqlSessionFactory’ threw exception; nested exception is java.lang.IllegalStateException: Property ‘configuration’ and ‘configLocation’ can not specified with together
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.3.24.jar:5.3.24]
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) ~[spring-beans-5.3.24.jar:5.3.24]
… 78 common frames omitted
Caused by: java.lang.IllegalStateException: Property ‘configuration’ and ‘configLocation’ can not specified with together
at org.springframework.util.Assert.state(Assert.java:76) ~[spring-core-5.3.24.jar:5.3.24]
at org.mybatis.spring.SqlSessionFactoryBean.afterPropertiesSet(SqlSessionFactoryBean.java:488) ~[mybatis-spring-2.0.7.jar:2.0.7]
at org.mybatis.spring.SqlSessionFactoryBean.getObject(SqlSessionFactoryBean.java:633) ~[mybatis-spring-2.0.7.jar:2.0.7]
at org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration.sqlSessionFactory(MybatisAutoConfiguration.java:188) ~[mybatis-spring-boot-autoconfigure-2.2.2.jar:2.2.2]
at org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration E n h a n c e r B y S p r i n g C G L I B EnhancerBySpringCGLIB EnhancerBySpringCGLIB36ad62da.CGLIB$sqlSessionFactory 1 ( < g e n e r a t e d > )   [ m y b a t i s − s p r i n g − b o o t − a u t o c o n f i g u r e − 2.2.2. j a r : 2.2.2 ] a t o r g . m y b a t i s . s p r i n g . b o o t . a u t o c o n f i g u r e . M y b a t i s A u t o C o n f i g u r a t i o n 1(<generated>) ~[mybatis-spring-boot-autoconfigure-2.2.2.jar:2.2.2] at org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration 1(<generated>) [mybatisspringbootautoconfigure2.2.2.jar:2.2.2]atorg.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration E n h a n c e r B y S p r i n g C G L I B EnhancerBySpringCGLIB EnhancerBySpringCGLIB 36 a d 62 d a 36ad62da 36ad62da F a s t C l a s s B y S p r i n g C G L I B FastClassBySpringCGLIB FastClassBySpringCGLIB 54783 d 2 d . i n v o k e ( < g e n e r a t e d > )   [ m y b a t i s − s p r i n g − b o o t − a u t o c o n f i g u r e − 2.2.2. j a r : 2.2.2 ] a t o r g . s p r i n g f r a m e w o r k . c g l i b . p r o x y . M e t h o d P r o x y . i n v o k e S u p e r ( M e t h o d P r o x y . j a v a : 244 )   [ s p r i n g − c o r e − 5.3.24. j a r : 5.3.24 ] a t o r g . s p r i n g f r a m e w o r k . c o n t e x t . a n n o t a t i o n . C o n f i g u r a t i o n C l a s s E n h a n c e r 54783d2d.invoke(<generated>) ~[mybatis-spring-boot-autoconfigure-2.2.2.jar:2.2.2] at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) ~[spring-core-5.3.24.jar:5.3.24] at org.springframework.context.annotation.ConfigurationClassEnhancer 54783d2d.invoke(<generated>) [mybatisspringbootautoconfigure2.2.2.jar:2.2.2]atorg.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) [springcore5.3.24.jar:5.3.24]atorg.springframework.context.annotation.ConfigurationClassEnhancerBeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331) ~[spring-context-5.3.24.jar:5.3.24]
at org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration E n h a n c e r B y S p r i n g C G L I B EnhancerBySpringCGLIB EnhancerBySpringCGLIB36ad62da.sqlSessionFactory() ~[mybatis-spring-boot-autoconfigure-2.2.2.jar:2.2.2]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_271]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_271]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_271]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_271]
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.3.24.jar:5.3.24]
… 79 common frames omitted

关闭命名映射之后或者关闭配置路径之后项目正常。

原因分析

根据错误信息分析,出现该错误的原因是同时使用了configLocation和configuration属性。这两个属性是SqlSessionFactoryBean类的属性,分别用于指定MyBatis配置文件的位置和MyBatis配置对象。

在配置中,你在application.xml中指定了configLocation属性,在mybatis-config.xml中定义了MyBatis的配置对象,在applicaiton中又指定了configuration属性,因此出现了冲突。文章来源地址https://www.toymoban.com/news/detail-440014.html

解决方法

  1. 解决该问题的方法是,需要在应用程序中删除configLocation属性,只使用applicaiton.yml中的configuration属性来指定MyBatis的配置对象。或者不使用applicaiton.yml中的configuration属性,就可以配置config-locations并且在其中配置属性
  2. 如果需要同时启用这两个属性,则需要自定义一个MybatisConfig类,该类将扩展org.mybatis.spring.boot.autoconfigure.MybatisProperties类。

到了这里,关于在springboot项目中配置数据库下划线命名映射为java的驼峰命名时出错的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot项目配置文件数据库用户名密码加密

    在使用SpringBoot开发过程中,会将一些敏感信息配置到SpringBoot项目的配置文件中( 不考虑使用配置中心的情况 ),例如数据库的用户名和密码、Redis的密码等。为了保证敏感信息的安全,我们需要将此类数据进行加密配置。 目前通用的做法是使用 jasypt 对数据库用户名或者密码

    2024年02月10日
    浏览(47)
  • SpringBoot系列之Web如何支持下划线驼峰互转的传参与返回

    SpringBoot系列之Web如何支持下划线驼峰互转的传参与返回 接下来介绍一个非常现实的应用场景,有些时候后端接口对外定义的传参/返回都是下划线命名风格,但是Java本身是推荐驼峰命名方式的,那么必然就存在一个传参下换线,转换成驼峰的场景;以及在返回时,将驼峰命名

    2024年02月22日
    浏览(38)
  • SpringBoot项目application配置文件数据库密码上传git暴露问题解决方案

    项目中含有配置文件,配置文件中含有数据库的用户名和密码,上传git直接对外网开放。那后果会怎样可想而知。 jasypt(Java Simplified Encryption)是一个简化的开源 Java 加密工具库 输出 使用很简单,只需要引入jasypt-spring-boot-starter依赖,然后将配置文件中的明文换成\\\"ENC(密文即可)“

    2024年04月14日
    浏览(51)
  • word@制表位和列数据对齐@填空下划线制作

    Insert or add tab stops - Microsoft Support Using the ruler in Word - Microsoft Support 在Microsoft Word中,制表符(Tab)是一种用于控制文本对齐和缩进的功能。制表符可以帮助您在文档中创建整齐的布局,如制作目录、制作表格或对齐文本等。 制表位类型 Word中有四种主要的制表符: 左对齐制表

    2024年02月13日
    浏览(33)
  • 详解Python单下划线和双下划线使用

    在Python编程中,我们经常会遇到单下划线(_)和双下划线(__)的使用。它们在命名标识符、变量、方法和属性中扮演着不同的角色。本文将详细解释Python中单下划线和双下划线的含义和用法,并通过代码示例进行讲解,帮助你理解它们的作用和适用场景。 命名约定。在Py

    2024年02月10日
    浏览(39)
  • HTML中设定下划线样式并且指定下划线长度

    今天笔者在写网页导航栏时,想要给链接加一个悬停下划线,写出来如下 HTMl: CSS:(关于其他格式的设定略,只看下划线这一段代码) 这样确实是设定下划线了,但是效果如下,看上去很难看 既然这样,那么该如何改变一下呢? 其实可以使用border-bottom来实现,代码如下

    2024年02月10日
    浏览(39)
  • Python 中的单下划线和双下划线

    哈喽大家好,我是咸鱼 当我们在学习 Python 的时候,可能会经常遇到单下划线 _ 和双下划线 __ 这两种命名方式 单下划线 _ 和双下划线 __ 不仅仅是只是一种简单的命名习惯,它们在 Python 中有着特殊的含义,对于代码的可读性和功能实现有着关键的作用。 那么今天我们来看一

    2024年02月05日
    浏览(42)
  • SpringBoot项目连接数据库

    1、找到applications.yml,如下图  2、写入代码  

    2024年02月15日
    浏览(43)
  • SpringBoot如何配置数据库

    项目启动需要一个链接数据库,所以在此记录一下。 根据配置文件的后缀书写格式略有不同。 此处以MySQL为例,使用Maven为例 若是.yaml后缀的配置文件,那么端口书写为 解释: ①导入数据源和JDBC驱动 的依赖包 ②配置文件中配置数据库 ③开始使用

    2024年02月11日
    浏览(36)
  • css 下划线

    在 CSS 中,可以使用 \\\"text-decoration\\\" 属性来设置文本的下划线。例如: 这会使所有的段落文本都带有下划线。你也可以使用 \\\"text-decoration-style\\\" 属性来设置下划线的样式,例如实线、虚线或点线等。 你还可以使用 \\\"border-bottom\\\" 属性来设置下划线,例如: 这会在段落文本下方添加

    2024年02月12日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包