mysql关联关系

一对多(关联查询):

    <!--List<Dept> findAll();-->
    <!--一对多查询方法-->
    <select id="findAll" resultMap="DeptMap">
        select d.*,e.id eid ,e.name ename From dept d join emp e ON d.id=e.dept.id     
    </select>

    <resultMap id="DeptMap" type="Dept">
    <!--主键-->
    <id column="id" property="id"></id>
    <result column="name" property="name" ></result>
    <collection ofType="Emp" property="emps">
        <id column="eid" property="id"></id>
        <result column="ename" property="name" ></result>
    </collection> 
    </resultMap> 

一对多(嵌套查询):
    (1)DeptMapper中:
    <!--List<Dept> findAll();-->
    <!--一对多查询方法-->
    <select id="findAll" resultMap="DeptMap">
        select * From dept 
    </select>

    <resultMap id="DeptMap" type="Dept">
    <!--主键-->
    <id column="id" property="id"></id>
    <result column="name" property="name" ></result>
    <collection column="id" property="emps" select="cn.itsource.mapper.EmpMapper.findEmpById">
        
    </collection> 
    </resultMap> 

    (2)EmpMapper中:
    <!--List<Dept> findAll();-->
    <select id="findEmpById" resultType="Emp">
        select * From emp where dept_id=#{id}
    </select>


多对一(关联查询):
    <!--List<Emp> findAll();-->
    <!--多对一查询方法-->
    <select id="findAll" resultMap="EmpMap">
        select e.*,d.name dname From emp e join dept d ON e.dept.id=d.id
    </select>    
    <resultMap id="EmpMap" type="Emp">
    <!--主键-->
    <id column="id" property="id"></id>
    <result column="name" property="name" ></result>
    <result column="dept_id" property="dept_id" ></result>
    <association javaType="Dept" property="dept">
        <result column="dname" property="name" ></result>
    </association> 
    </resultMap> 

多对一(嵌套查询):
    (1)EmpMapper中:
    <!--List<Emp> findAll();-->
    <!--多对一查询方法-->
    <select id="findAll" resultMap="EmpMap">
        select * From emp
    </select>    
    <resultMap id="EmpMap" type="Emp">
    <!--主键-->
    <id column="id" property="id"></id>
    <result column="name" property="name" ></result>
    <result column="dept_id" property="dept_id" ></result>
    <association column="dept_id" property="dept" select="cn.itsource.mapper.DeptMapper.findDeptById">
        
    </association> 
    </resultMap> 

    (2)DeptMapper中:
    <select id="findDeptById" resultType="Emp">
        select * From emp where id=#{dept_id}
    </select>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL中,数据表的关联关系有三种:多对一关系,一对一关系和多对多关系。 在多对一关系中,一个实体可以对应多个另一个实体的实例,而另一个实体的实例只能对应一个实体的实例。例如,在学生和班级之间的关系中,一个班级可以有多个学生,但一个学生只能属于一个班级。 在一对一关系中,一个实体的实例只能对应另一个实体的实例,而另一个实体的实例也只能对应一个实体的实例。例如,一个人和身份证之间的关系就是一对一的关系。 在多对多关系中,一个实体的实例可以对应多个另一个实体的实例,而另一个实体的实例也可以对应多个实体的实例。例如,在学生和课程之间的关系中,一个学生可以选修多门课程,而一门课程也可以被多个学生选择。 以上是MySQL中常见的关联关系,根据实际需求和设计,可以选择适合的关联关系来建立数据表之间的关系。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [MySQL关联关系](https://blog.csdn.net/lk142500/article/details/83686291)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值