【Spring-MyBatis】数据库字段下划线映射到 java 对象的驼峰式命名属性

author: jwensh
date: 2022.06.26

命名规范要求

  • 数据库使用 snake_case 格式命名表名和字段名;
  • java 类属性使用 camelCase 命名属性名;

所以产生了一个问题,spring + mybatis 下如何进行 orm 内容映射

方式一:mapper 中使用 @Result 注解

	@Select("SELECT * FROM driver_api where is_available = 1 ORDER BY ename ASC")
    @Results({
        @Result(column = "api_name", property = "apiName" )
    })
    List<DriverApiDO> getAllDriverApi();
  • 在进行 sql 查询和初始化实体时 mybatis 会自动转化,写 sql 语句的时候也不必为有下划线的字段设置与实体类相同的别名;
  • 如未加配置之前的 sql 查询语句为:select id, driver_api as driverApi from driver_api

方式二:mybatis-config.xml 配置文件

在 spring 项目下 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>
        <!-- 设置启用数据库字段下划线映射到java对象的驼峰式命名属性,默认为false -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
</configuration>

或者是在 spring-boot 项目下的配置文件中:

mybatis.configuration.mapUnderscoreToCamelCase = true
或者
mybatis.configuration.map-underscore-to-camel-case = true

在 mybatis 的配置文件里加入如上的配置,就基本不用 xml 中进行字段和实体和属性的映射;

备注:

resultMap 中的 property 属性或别名要和对象中属性的名字相同,但是实际匹配是,MyBatis 会先将两者都转换为大写形式,然后再判断是否相同,即 property=“userName” 和 property=“username” 都可以匹配到对象 userName 属性上。

参考

https://mybatis.org/mybatis-3/zh/sqlmap-xml.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值