Springboot配置多数据源导致[下划线自动映射驼峰]配置失效问题解决

BeanPropertyRowMapper映射底层原理,与驼峰写法字段映射失效现象重现以及解决方法 文章目录1. 本文核心内容2. BeanPropertyRowMapper 映射原理1. 变量名与字段名相同(代码演示)2. 驼峰映射方式(错误重现)3. BeanPropertyRowMapper 底层原理1. BeanPropertyRowMapper初始化源码2. BeanPropertyRowMapper映射源码4. 驼峰映射问题解决1. 解释上述(驼峰映射方式)代码 原因2. 解决方法1. 字段取名字规范2. sql语句 使用别名3. 继承BeanPropertyRowMapper,重写里面的un 阅读详情

前言

项目中用到了MySQL和ClickHouse两种数据源,在项目中进行了多数据源配置。但是发现在查询数据的时候数据库中下划线命名的字段无法自动映射到Java实体类对应的字段中。

解决方案

我们下划线映射成驼峰的配置为mybatis.configuration.map-underscore-to-camel-case: true。

我们需要在MySQLDataSource配置类中多写一些配置:

@Configuration
@MapperScan(basePackages = "it.aspirin.riderserver.mapper.mysql", sqlSessionTemplateRef = "mySqlSessionTemplate")
public class MySQLDataSourceConfig {

    /**
     * 配置多数据源导致下划线命名映射为驼峰失效,需要在这里加一个配置,并在下面SqlSessionFactory方法中引入
     *
     * @return 配置
     */
    @Bean
    @ConfigurationProperties(prefix = "mybatis.configuration")
    public org.apache.ibatis.session.Configuration globalConfiguration() {
        return new org.apache.ibatis.session.Configuration();
    }

    /**
     * 自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常
     */
    @Bean(name = "mysqlDataSource")
    @Primary
    @ConfigurationProperties(prefix = "spring.datasource.mysql")
    public DataSource dataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "mySqlSessionFactory")
    @Primary
    public SqlSessionFactory sqlSessionFactory(@Qualifier("mysqlDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(dataSource);
        //这里将下划线映射为驼峰的配置引入
        bean.setConfiguration(globalConfiguration());
        bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/mysql/*.xml"));
        return bean.getObject();
    }

    /**
     * 创建事务
     *
     * @param dataSource
     * @return
     */
    @Bean(name = "mysqlTransactionManager")
    @Primary
    public DataSourceTransactionManager transactionManager(@Qualifier("mysqlDataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }

    /**
     * 用于注入dao
     *
     * @param sqlSessionFactory
     * @return
     * @throws Exception
     */
    @Bean(name = "mySqlSessionTemplate")
    @Primary
    public SqlSessionTemplate SqlSessionTemplate(@Qualifier("mySqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
        return new SqlSessionTemplate(sqlSessionFactory);
    }

    @Bean(name = "mysqlDataSource")
    public JdbcTemplate mysqlJdbcTemplate(@Qualifier(value = "mysqlDataSource") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }
}

如上面配置文件,首先写globalConfiguration()方法,该方法特别注意@ConfigurationProperties(prefix = "mybatis.configuration")注解。表示将mybatis.configuration开头的配置信息映射到配置类中。

在sqlSessionFactory()方法中中将上述配置设置进去,下划线自动映射驼峰的配置就可以生效了。

SpringBoot整合MyBatis-Plus实战指南 数据持久层是Java企业级开发的核心组件,MyBatis作为主流ORM框架通过XML/注解方式实现SQL映射。MyBatis-Plus在其基础上进行增强,提供自动化CRUD、代码生成等特性,与SpringBoot整合后可减少70%的样板代码。这种组合特别适合需要快速迭代的业务系统,通过LambdaQueryWrapper等DSL写法能保持类型安全的查询构建。实际项目中常见于用户管理、订单系统等需要高频数据库操作的场景,配合分页插件、多数据源支持等企业级特性,能有效提升开发效率并降低维护成本。 阅读详情

相关推荐

SpringBoot与MyBatis-Plus整合实战:从零构建高效数据层开发

在Java企业级应用开发中,ORM(对象关系映射)框架是连接应用与数据库的核心组件,其原理是通过将数据库表映射为Java对象,简化数据操作。MyBatis作为一款半自动化的ORM框架,在灵活性与性能之间取得了良好平衡,而MyBatis-Plus在其基础上提供了强大的增强功能,进一步提升了开发效率。这一技术组合的核心价值在于通过自动化CRUD操作、智能代码生成和内置分页插件等特性,将开发者从重复性工作中解放出来,使其更专注于复杂业务逻辑的实现。在实际应用场景中,无论是快速构建原型还是开发高并发生产系统,Spr

weixin_30735745的博客 368

Mybatis 开启驼峰命名不生效

在application.properties里配置 mybatis.configuration.map-underscore-to-camel-case=true 发现没有生效,没有成功映射到数据对象中,都是null 原因:手动配置了数据库连接 解决办法: 在数据库配置类中配置: @Bean @ConfigurationProperties(prefix = "mybatis.configuration") public org.apache.ibatis.session.Configuration g

zhanghe_zht的博客 6434

SpringBoot项目启动报错?别慌!手把手教你排查‘UserMapper’找不到Bean的5种常见原因

本文详细解析了SpringBoot项目启动时常见的‘UserMapper’找不到Bean的5种原因,包括包扫描路径错误、注解配置不当、配置文件陷阱等。通过系统性的排查方法和实用技巧,帮助开发者快速定位并解决这类启动报错问题,提升开发效率。

weixin_30621711的博客 231

mybatis设置驼峰映射后失效问题(多数据源)

mybatis设置驼峰映射后失效问题 多数据源

偷得浮生半日闲 7093

SpringBoot+MyBatis踩坑实录:反射异常那些年我们填过的坑

本文通过三个真实案例,深入剖析了SpringBoot集成MyBatis时常见的反射异常问题,如数据库字段大小写不一致、Lombok与MyBatis-Plus的兼容性冲突以及多数据源配置下的映射错误。文章提供了具体的解决方案和调试技巧,帮助开发者快速定位并修复org.apache.ibatis.reflection.ReflectionException等棘手问题,提升开发效率。

weixin_29313423的博客 56

Gemini Enterprise免费试用攻略:解锁企业级AI平台的隐藏技巧与避坑指南

本文详细介绍了Gemini Enterprise免费试用的全流程攻略,包括注册优化、团队协作、资源管理和典型应用场景。通过解锁企业级AI平台的核心功能如Gemini 3.0 Pro模型和Nano Banana图像生成系统,帮助企业高效评估AI与业务的契合度。文章还提供了安全合规与数据管理的实用建议,确保试用过程顺畅无忧。

weixin_29233857的博客 657

mybatis 配置了驼峰映射,映射不上

mybatis: typeAliasesPackage: com.gaia.order.vo,com.gaia.order.model configuration: map-underscore-to-camel-case: true mapper-locations: classpath:com/gaia/pay/mapping/**/*.xml 主要是因为配置的...

小贺的博客 5177

ECMWF等大气数据批量下载(Python API)详细步骤

ECMWF等大气数据批量下载(Python API) 遥感方向做热红外温度反演,不可避免的要用到大气廓线数据,大气数据具有实时性,比如2018年9月1日的早上8点的影像,为了提高反演精度就需要用到时间上与其相差尽可能接近的大气数据,用于消除大气的影响,如果数据量较少我们可以查看影像的时间和空间范围进行下载,但是如果处理某个较大区域时可能涉及到大量的影像,如果一景一景对应查找去下载会很麻烦,因此针对大量数据的自动批量下载很有必要。本文根据 https://cds.climate.copernicus.eu/#

liuxiaojiangtobeno1的博客 1万+

以若依为例,解决Spring Boot项目,多数据源情况下mybatis驼峰下划线转换失效

解决Spring Boot项目中mybatis驼峰下划线转换失效

如果还没想清楚,就穷举所有 3019

ABAP ALV编辑后触发事件

1.FUNCTION ALV在it_events的参数中,写入对应的事件。2.OO ALV和FUNCTION ALV都可以,注册当前ALV的事件,对应的事件需要创建对象去实现。下面代码中,实现的是第一种,在it_events中写入事件。下面的代码是通过创建对象去实现ALV事件。

a86632678的博客 3852

无人机机场自动化巡检钢铁厂管廊技术方案

摘要:针对钢厂管廊人工巡检效率低、成本高等问题,提出5G+无人机自主巡检解决方案。该系统由智能机库、5G无人机、AI分析平台等组成,可实现自动起降、实时数据传输、缺陷智能识别等功能。无人机配备四合一云台相机,支持42分钟续航和复杂环境飞行,通过深度学习算法自动生成巡检报告。方案实施后可提升巡检效率3倍以上,降低人工成本和安全风险,实现全天候自动化巡检,为钢厂管廊安全管理提供智能化技术支持。(149字)

gxdhlg的专栏 1683

Mybatis 驼峰命名法失效,多数据源开启驼峰命名规则映射

项目框架: Spring Boot + Mybatis 问题描述: 做查询操作时,返回数据为NULL,导致当使用这条数据报空指针错误。 说明: 在数据库字段命名规范中,通常使用下划线“_”来连接两个单词,比如:user_id。但是在Java开发中,实体字段通常采用驼峰命名法,比如userId。如果不开启驼峰命名法,则映射到对象无法赋值。 简单粗暴解决办法一: 直接为结果集设定一个resultMap, 例如: <resultMap id="getUserIdMap" type="com.zjt.blo

zjt11112的博客 5052

视觉语言模型对抗攻击与防御:从传统方法到多模态挑战

本文深入探讨了视觉语言模型(VLM)面临的对抗攻击与防御挑战,从传统单模态攻击到多模态威胁的演进。分析了包括FGSM、PGD等经典攻击方法,以及新兴的多模态攻击如跨模态对抗样本和越狱攻击。同时提出了跨模态一致性检查、动态防御机制等创新防御策略,并结合医疗影像诊断等实战案例,为提升AI系统安全性提供了重要见解。

weixin_29231725的博客 392

SpringBoot中多数据源 配置mybatis 驼峰命名不管用,带下划线字段返回null值

在springboot中 开启是自动转换,但是,这个配置根本没有生效, 当查出来的数据时,只要字段名中有 下划线的字段, 就会出现 null 在者我的工程是多数据源工程,这是导致这个配置没有生效的原因,因为他不知道为哪个数据源开启驼峰命名 所以我们需要在配置多数据源的文件中,单独加入配置,(其他配置也是如此,只要涉及到多数据源的,都需要给每一个数据源去配置)   在多数据源的配置文件...

荡漾 8185

Windows加域迁移避坑指南:Profwiz工具实战中的5个常见问题与解决方案

本文详细解析了使用Profwiz工具进行Windows加域迁移时的5个常见问题及解决方案,包括临时配置文件生成、密码策略冲突、SID冲突等。通过实战案例和优化技巧,帮助IT运维团队高效完成账户配置文件迁移,确保Active Directory环境下的数据完整性和权限无缝衔接。

q9r0s的博客 512

Sigrity Power Tree如何生成电源树操作指导

Sigrity Power Tree可以方便地生成电源树,仅需要网表文件就能将系统的电源树直观的显示出来,生成的电源树文件可以用Power DC,optimizePI进行直流和交流仿真,下面介绍如何生成电源树。Base on [Device_TYPE and VALUE]就是识别网表中器件的Device_TYPE作为power tree中的模型的名字。Allegro layout netlist file,就是从Allegro layout文件中输出的netlist第三方网表文件。如何生成电源树操作指导。

weixin_54787054的博客 1532

Spring Boot + Mybatis数据库多数据源解决驼峰映射不生效问题

mybatis多数据源解决驼峰映射不生效问题

yy1209357299的博客 4290

今日头条面试——iOS开发面试题

layoutIfNeeded和setNeedsLayout的区别。* Pod update和pod install的区别。* 10、autoreleasepool的使用场景。* 如何hook一个对象的方法,而不影响其它对象。* 数组cop后里面的元素会复制一份新的吗。* 介绍项目,主要介绍自己强项一点的地方。* assing可以使用在对象中吗。* isEquel和hash的关系。* 4、谈谈runtime的理解。* 8、谈谈runloop的理解。* copy和strong的区别。

FPGA/MATLAB学习教程/源码/项目合作开发 593

SpringBoot集成MyBatis:YAML配置详解与实战避坑指南

在Java企业级应用开发中,ORM框架是连接对象模型与关系数据库的核心技术,其配置的合理性直接影响着应用的性能与稳定性。MyBatis作为一款半自动化的持久层框架,通过灵活的SQL映射和配置,在复杂查询场景下展现出显著优势。SpringBoot通过“约定大于配置”的理念,为MyBatis提供了开箱即用的自动配置能力,极大地简化了集成流程。其核心价值在于通过简洁的YAML配置文件,统一管理数据源、连接池、SQL映射与事务行为,从而提升开发效率并保障生产环境的可靠性。在实际应用场景中,开发者常需处理多数据源、S

weixin_30791095的博客 476

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

springBoot使用mysql+oracle多数据源配置

在mysql数据库基础上增加对Oracle数据库的支持

YHK_223的博客 1719

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

SpringBoot整合通用Mapper实战:从入门到精通,避坑指南与性能优化

在Java后端开发中,ORM框架是数据持久层的核心技术,它通过对象关系映射简化了数据库操作。MyBatis作为主流ORM框架,以其灵活性著称,但手动编写大量SQL语句仍显繁琐。通用Mapper(tk.mybatis)基于MyBatis,通过注解和接口继承自动生成SQL,显著提升了单表CRUD的开发效率。其技术价值在于遵循约定大于配置的原则,减少了重复代码,但同时也引入了动态SQL生成和复杂查询支持等挑战。在实际应用场景中,开发者常面临配置细节、方法误用及性能问题。本文聚焦于通用Mapper的高频使用场景,深

weixin_34199405的博客 419

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Spring Boot整合MyBatis避坑指南:解决Mapper扫描失败的3种方法

本文详细解析了Spring Boot整合MyBatis时Mapper扫描失败的常见问题,提供了三种有效的解决方案:注解配置法、XML配置法和自动扫描配置法。通过具体代码示例和配置要点,帮助开发者快速定位并解决Mapper接口无法注入的问题,确保项目顺利运行。

weixin_30500105的博客 587

MyBatis-Plus核心功能与SpringBoot集成实战

MyBatis-Plus作为MyBatis的增强工具,通过自动生成CRUD操作和条件构造器等核心功能,显著提升Java后端开发效率。其无侵入式设计允许在现有MyBatis项目中平滑集成,同时保持与SpringBoot生态的完美兼容。在数据持久层开发中,自动填充策略、多租户支持和分页查询等特性能够应对企业级应用的复杂场景。结合LambdaQueryWrapper的条件构造方式和性能优化技巧,开发者可以构建出高效可靠的数据访问层。本文以SpringBoot 3.x和MyBatis-Plus 3.5.x为例,详解

weixin_34296641的博客 404

MyBatis核心架构与高级应用实践指南

ORM(对象关系映射)技术通过将数据库表与编程语言对象建立映射关系,极大简化了数据持久层开发。其核心原理在于元数据配置与SQL自动生成,能够有效降低JDBC模板代码量,提升开发效率。作为ORM框架的重要分支,MyBatis采用半自动化映射理念,既保留了SQL灵活性,又通过类型处理器(TypeHandler)和动态SQL等机制增强了工程实践价值。在微服务架构中,MyBatis与缓存机制(如二级缓存)的深度整合,以及批量操作优化(BatchExecutor)等特性,使其在电商、金融等需要处理复杂查询的高并发场景

weixin_34414650的博客 424

避开这些坑!Spring Boot 3.x整合MyBatis-Plus 3.5.1的配置细节与常见问题排查

本文详细解析了Spring Boot 3.x与MyBatis-Plus 3.5.1集成过程中的常见问题与配置细节,包括版本兼容性、数据库配置、注解使用、分页插件设置等关键点,帮助开发者高效完成整合并避免常见错误。

weixin_42520374的博客 331
上一篇: 配置http连接池以及跳过https验证
下一篇: Java 图像压缩库thumbnailator压缩图片未生效问题
iFence
博客等级 码龄9年 8051粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值