Mybaits的map-underscore-to-camel-case参数用法

本文解析了MyBatis中map-underscore-to-camel-case参数的作用,详细阐述了其如何实现数据库字段与实体类属性之间的映射,特别是在去除下划线并转换为驼峰命名法的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mybatis的map-underscore-to-camel-case参数设置为true时,可以将数据库的带下划线“”给去掉然后映射到实体类的属性上去。
mybatis映射属性时的逻辑大致是:
1、先将字段的"
"去掉,具体见代码MetaClass的findProperty方法:

public String findProperty(String name, boolean useCamelCaseMapping) {
    if (useCamelCaseMapping) {
      name = name.replace("_", "");
    }
    return findProperty(name);
  }

2、将字段转成大写,然后查找对象中匹配的属性,具体代码见Reflector.findPropertyName方法:

public String findPropertyName(String name) {
    return caseInsensitivePropertyMap.get(name.toUpperCase(Locale.ENGLISH));
  }

从以上分析可以看见,其实mybatis的驼峰法映射并不是严格限制的驼峰法语法,具体来说,对应“aa_bb”字段,其既可以匹配上“aaBb”属性,也可以匹配上“Aabb”属性。这一点在日常写代码时需要注意下。
还有一个需要特别关注的时,当属性映射不成功时,在调试代码时注意检查MetaClass的findProperty的useCamelCaseMapping参数,在某些情况下,比如有多个数据源时,会导致该参数不生效,需要换另外一种配置方式,具体的配置方式请查找其他材料,本文不再赘述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值