项目中的查询一般不局限于单表操作,这时查询出来的数据接收的器皿就显得比较重要;
例子:
现在有三个表,对应的bean如下:
class UserDetail{
private String username;
private String name;
private int dept_id;
private int dormitory_id;
private String email;
private String ic_card;
...........get and set...............
}
class Dept{
private int dept_id;
private String dept;
private String dept_remark;
............get and set...........
}
class Dormitory{
private int dormitory_id;
private String dormitory_number;
private String room_number;
.............get and set ..............
}
从三个表的成员可以看出,UserDetail表中保存了另两个表的id,所以要取出准确的数据需要关联其他两个表查询
在mybatis中,如果还想使用resultType,那么最先想到的肯定是把sql查询出来的结果集重新写成一个bean,这个当然可以实现,
而mybatis中提供了resultMap.使用如下:
1. 在UserDetail中添加另外两个表的成员:
private Dept dept;
private Dormitory dormitory;
.......get and set.......
2. 在mybatis中的映射文件xml中配置resultMap:
<resultMap type="UserDetail" id="testmap">
<result column="username" property="username" />
<result column="name" property="name" />
<result column="email" property="email" />
<result column="ic_card" property="ic_card" />
<!-- column为sql中的字段名,priperty为bean中的属性 -->
<!-- association: 添加关联的两个bean,对应的属性及column-->
<association property="dormitory" javaType="com.cen.entity.Dormitory">
<!-- id:关联查询用户的唯一标识 column:指定唯一标识用户信息的列 javaType:映射到user的哪个属性 -->
<result column="dormitory_number" property="dormitory_number" />
<result column="room_number" property="room_number" />
</association>
<association property="dept" javaType="com.cen.entity.Dept">
<result column="dept" property="dept" />
</association>
</resultMap>
这样就可以使用resultmap: ----->resultMap="testmap"
代码中就可以使用如:List<UserDetail> list 的形式全部接收