MyBatis 一对多的查询实例

情况:一个班级下面有多名学生

需求:查询该班级下面的所有学生

解决:首先分析属于数据库中的1:n的关系,外建一般维护在多的一方,所以每一个学生的记录中都含有一个class_id,我们可以通过class表 id查询到班级里的所有的学生。

下面上代码:

我的实例代码解决的是一个类图片库中可能包含多张图片,图片和图片类别的详细描述分别存储在两张表中,查询文档内容的同时查询出图片。

首先建一个扩展类最好放在新建的extend包下:

package com.muzi.museum.bean.extend;

import com.muzi.museum.bean.Type_picture;
import java.util.Date;
import java.util.List;

public class TypeeVM {
    private Integer id;

    private String typeName;

    private Date createTime;

    private Date updateTime;

    private String createUser;

    private String updateUser;

    private String isDelete;

    private String typeDescription;

    private List<Type_picture> type_pictures;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getTypeName() {
        return typeName;
    }

    public void setTypeName(String typeName) {
        this.typeName = typeName;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    public String getCreateUser() {
        return createUser;
    }

    public void setCreateUser(String createUser) {
        this.createUser = createUser;
    }

    public String getUpdateUser() {
        return updateUser;
    }

    public void setUpdateUser(String updateUser) {
        this.updateUser = updateUser;
    }

    public String getIsDelete() {
        return isDelete;
    }

    public void setIsDelete(String isDelete) {
        this.isDelete = isDelete;
    }

    public String getTypeDescription() {
        return typeDescription;
    }

    public void setTypeDescription(String typeDescription) {
        this.typeDescription = typeDescription;
    }

    public List<Type_picture> getType_pictures() {
        return type_pictures;
    }

    public void setType_pictures(List<Type_picture> type_pictures) {
        this.type_pictures = type_pictures;
    }


}

 注意点:我们扩展的类中不仅包含的是  1这一方的成员变量,还需要将多的这一方的对象定义为一个list集合

 相应的建我们的映射接口 在dao层


public interface TypeeVMMapper {
    //查询所有的名俗类别
    List<TypeeVM> selectAll();
}

 最后在mybatis中的映射文件

  <resultMap id="BaseResultMap" type="com.muzi.museum.bean.extend.TypeeVM" >
        <id column="id" property="id" jdbcType="INTEGER" />
        <result column="type_name" property="typeName" jdbcType="VARCHAR" />
        <result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
        <result column="update_time" property="updateTime" jdbcType="TIMESTAMP" />
        <result column="create_user" property="createUser" jdbcType="VARCHAR" />
        <result column="update_user" property="updateUser" jdbcType="VARCHAR" />
        <result column="is_delete" property="isDelete" jdbcType="CHAR" />
        <collection column="id" property="type_pictures" select="selectPictureByTypeId" javaType="ArrayList"
        ofType="com.muzi.museum.bean.Type_picture">
        </collection>
    </resultMap>

最重要的是将list集合映射为一个collection

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值