我们一般在数据库用主外建关联多张表,下面就是给大家演示当两张表关联的时候的几种展现方式:
查询到表关联数据大致可以分为两类
一、封装一个实体类
封装一个实体类就是把两张表的数据都封装到一个实体类里,然后在配置文件中用resultMap把两张表的数据封装起来,下面有两张表:
实体类:
// 注意:使用mybatis时实体类id要和数据库字段名一致
@TableId("id")
private Integer id;
/**
* 花种的id
*/
// @TableField("flowerId")
// private Integer flowerId;
/**
* 花种名称
*/
@TableField("name")
private String name;
/**
* 上传人
*/
@TableField("updateUser")
private Integer updateUser;
/**
* 上传时间
*/
// @DateTimeFormat(pattern = "yyyy-MM-dd")
@TableField("orderTime")
private String orderTime;
/**
* 花种颜色
*/
@TableField("colour")
private Integer colour;
/**
* 图片展示
*/
@TableField("photo")
private String photo;
然后在配置文件中配置resultMap标签属性:
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.website.system.model.Flower">
<result column="id" property="id" />
<result column="name" property="name" />
<result column="orderTime" property="orderTime"></result>
<result column="colour" property="colour"></result>
<result column="photo" property="photo"></result>
</resultMap>
<!--查询全部花种信息-->
<select id="findAll" resultMap="BaseResultMap">
SELECT f.*,t.* FROM test_flower f
LEFT JOIN test_flower_type t
ON t.f_id=f.id
</select>
二、封装两个实体类
当封装两个实体类就是每张表分别建立一个实体类,然后在主表实体类里/封装一个关联表实体类/为属性,有两种展示方法:
1)在serviceImpl实现类里把关联表数据注入进去(推荐使用)
public List<Flower> findAll() {
List<Flower> flowerList = flowerMapper.findAll();
for (Flower flower : flowerList) {
Integer id = flower.getId();
FlowerType flowerType = flowerTypeMapper.findFlowerType(id);
flower.setFlowerType(flowerType);
}
return flowerList;
}
2)在配置文件中配置resultMap:
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.website.system.model.Flower">
<result column="id" property="id" />
<result column="name" property="name" />
<result column="orderTime" property="orderTime"></result>
<result column="colour" property="colour"></result>
<result column="photo" property="photo"></result>
<association property="flowerType" javaType="com.website.system.model.FlowerType">
<id column="type_id" property="typeId"></id>
<result column="orderTime" property="orderTime"></result>
<result column="photo" property="photo"></result>
<result column="uploadUser" property="uploadUser"></result>
</association>
</resultMap>
注意:如果是单个实体类属性resultMap标签里用<association property="实体类属性名" javaType="实体类类名">
,如果是集合实体类属性resultMap标签里用<collection property="实体类属性名" ofType="实体类类名">
。