MyBatis中数据库字段名与实体类属性名不一致

目录

  • 1. `MyBatis` 中数据库字段名与实体类属性名不一致
    • 1.1. 起别名
    • 1.2. `resultMap` 可以指定映射关系
    • 1.3. 驼峰命名

1. MyBatis 中数据库字段名与实体类属性名不一致

在使用 MyBatis 来持久化数据库时,有时候会碰到数据库中表中的字段与 Java 实体类中属性名不一致的情况,在这种情况下 MyBatis是不能完成字段的自动映射的。而通常情况下,数据库及实体类是不应该被改的的。所以要在不改变数据库以及实体类的情况下解决这个问题,下面是解决该问题的三种方式

public class User {

	private Long id;
	
	private String userName;
	
	private String passWord;
	
	......
}

1.1. 起别名

<select id="selectUserById" resultType="User">
	SELECT
        id,
        user_name as userName,
        user_password as passWord,
	FROM user
        WHERE id = #{id}
select>

1.2. resultMap 可以指定映射关系

<resultMap type="User" id="UserResultMap">
		<id column="id" property="id"/>
		<result column="user_name" property="userName"/>
		<result column="user_password" property="userPassword"/>
resultMap>
	
	
<select id="selectUserById" resultMap="UserResultMap">
	SELECT 
        id,
        user_name,
        user_password,
    FROM user
        WHERE id = #{id}
select>
  • 使用 resultMap 时,在 select 语句配置中,要有 resultMap 替换原来的 resultType
  • resultMap 中的 column 要与查询到的字段名一致,property 要与实体类的属性一致

1.3. 驼峰命名

这种情况下,MyBatis 提供了一个全局属性 mapUnderscoreToCamelCase 来解决两者名字不一致的问题

<settings>
	
	<setting name="mapUnderscoreToCamelCase" value="true"/>
	
settings>
  • 因为该属性是全局属性,所以需要配置在 MyBatis 的配置文件中,而不是 Mapper.xml 映射文件中

你可能感兴趣的:(中间件,#,mybatis,/,jpa,mybatis)