职员表(t_emp):
emp_id | emp_name | age | gender | dept_id |
---|---|---|---|---|
1 | Tom | 10 | 男 | 1 |
2 | Jim | 20 | 女 | 1 |
3 | Sam | 30 | 男 | 1 |
4 | Oum | 27 | 男 | 2 |
5 | Kim | 14 | 女 | 3 |
6 | Yum | 36 | 男 | 3 |
部门表(t_dept):
dept_id | dept_name |
---|---|
1 | A |
2 | B |
3 | C |
POJO实体类:成员变量根据两张表创建
Emp:成员变量(Dept dept)、Getter、Setter、Constructor、toString
Dept:成员变量(List<Emp> emps)、Getter、Setter、Constructor、toString
1、当字段名和属性名不一致的情况,如何来处理映射关系
(1)为查询的字段设置别名,和属性名保持一致
select emp_id empId, emp_name empName, age, gender from t_emp where emp_id = #{empId}
(2)当字段符合MySQL的要求使用_,而属性符合java的要求使用驼峰
<!--此时可以在MyBatis的核心配置文件中设置一个全局配置,可以自动将_映射为驼峰-->
emp_id:empId emp_name:empName dept_id:deptId-->
<settings>
<!--将下划线映射为驼峰的配置-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
(3)使用resultMap自定义映射来处理
<!--
resultMap:设置自定义映射关系
id:唯一表示
type:处理映射关系实体类的类型
常用的标签:
id 标签:处理主键和实体类中属性的映射关系
result 标签:处理普通字段和实体类中属性的映射关系
colume:设置映射关系中的字段名,必须是sql查询出的某个字段
property:设置映射关系中的属性名,必须是处理实体类类型中的属性名
-->
<resultMap id="empResultMap" type="Emp">