在编写sql语句时会碰到数据库字段与我们实体类对象中属性名不一致,导致无法给实体类属性赋值。
数据库:
实体类:
有以下三种方式解决:
- 方式一:在编写SQL语句时给字段起别名与属性名一一对应
- 方式二: 需要字段和属性命名符合规则,我们可以在 mybatis-config.xml配置文件中设置。
字段名符合数据库的规则(使用_命名),实体类中的属性名符合Java的规则(使用驼峰命名法)
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
- 方式三:使用ResultMap设置自定义映射
resultMap属性:- id:表示自定义映射的唯一标识,不能重复
- type:查询的数据要映射的实体类的类型
- 子标签:
- id:设置主键的映射关系
- result:设置普通字段的映射关系
- 子标签属性:
- property:设置映射关系中实体类中的属性名
- column:设置映射关系中表中的字段名
<!-- Mapper接口全路径 -->
<mapper namespace="com.snow.mapper.EmployeeMapper">
<!--方式三:使用ResultMap设置自定义映射-->
<resultMap id="empResultMap" type="employee">
<id property="empId" column="emp_id"></id>
<result property="empName" column="emp_name"></result>
<result property="age" column="age"></result>
<result property="sex" column="sex"></result>
<result property="email" column="email"></result>
</resultMap>
<select id="getAllEmp" resultMap="empResultMap">
select * from t_emp
</select>
</mapper>