1.resultMap【重点实验内容】
解决一个问题:实体类成员变量名称和数据库查询名称不一致。
自动映射:
实体类成员变量名称和数据库查询名称一样会自动映射。
核心配置文件设置,默认是PARTIAL,对嵌套结果不会自动映射。开启FULL则对相同名称的字段自动映射。
普通手动映射
property 实体类成员变量名
column 数据库查询的字段名(或别名)
<resultMap id="UserMap" type="User">
<!-- id为主键 -->
<id column="id" property="id"/>
<!-- column是数据库表的列名 , property是对应实体类的属性名 -->
<result column="name" property="name"/>
<result column="pwd" property="password"/>
</resultMap>
多对一
多个学生对应一个老师。每一个学生关联到一个老师。
子查询方法:
先找到每个学生。再根据学生的tid(老师ID)外键去找老师。
优点:SQL简单,分步复合常规思维。
缺点:慢。映射参数稍微多一点。判断是否正确难。
1.指定父查询的resultMap的studentTeacher。不要弄成resultType了(报错过)。
2.resultMap。IDEA会自动补全填id(映射名)和type(返回类型)。
关联用association。
property 需映射的实体类属性名。
column 传入字段作为子查询的查询参数。可以指定多个参数{id=author_id,likename=author_name}。
javaType 说明返回类型。
select指定子查询方法。
整一个association标签可以这么想:关联关系,现在对property属性映射,传入column,返回javaType,通过select方法。
用代码说明的形式是:property = (javaType) select(column)
<select id="getStudents" resultMap="studentTeacher">
select * from student
</select>
<resultMap id="studentTeacher" type="student">