关于表关联数据几种展示方法

我们一般在数据库用主外建关联多张表,下面就是给大家演示当两张表关联的时候的几种展现方式:

查询到表关联数据大致可以分为两类

一、封装一个实体类

封装一个实体类就是把两张表的数据都封装到一个实体类里,然后在配置文件中用resultMap把两张表的数据封装起来,下面有两张表:
test_flower表
test_flower_type表
实体类:

//	注意:使用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="实体类类名">

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值