通常我们创建数据库表的时候,会将表中的字段名和实体类的属性名命名一致,但有时由于一些其他原因,我们无法这么做,这时,有以下几个常用的解决方案:
1. 在写sql语句时起别名
2. 在MyBatis的全局配置文件中开启驼峰命名规则
驼峰命名规则就像骆驼驼峰有一个突起点,例如employee_name用驼峰命名可表示为employeeName,其中中间的大写字母可看为突起驼峰的最高点。
<configuration>
<settings>
<!-- 开启驼峰命名规则 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<!-- 注册映射文件 -->
<mappers>
<mapper resource="EmployeeMapper.xml" />
</mappers>
3. 在Mapper映射文件中使用resultMap来自定义映射规则
把表中的字段名称通过自定义映射为自己自定义的字段。
<!-- 自定义高级映射 -->
<!-- namespace属性:必须是接口的全类名 -->
<mapper namespace="com.atguigu.mybatis.mapper.EmployeeMapper">
<!--
id属性:必须是接口中方法的方法名
resultType属性:必须是方法的返回值的全类名
-->
<select id="getEmployeeById" resultMap="myMap">
select * from employees where id = #{id}
</select>
<!-- 自定义高级映射 -->
<resultMap type="com.atguigu.mybatis.entities.Employee" id="myMap">
<!-- 映射主键 -->
<id column="id" property="id"/>
<!-- 映射其他列 -->
<result column="employee_name" property="employeeName"/>
<result column="email" property="email"/>
<result column="salary" property="salary"/>
<result column="dept_id" property="deptId"/>
</resultMap>
</mapper>