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
版权声明:本文为u013948858原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。