Mybatis 一对一 多对一

 <!-- <resultMap type="employee" id="emplist">
       <id property="ids" column="IDS"/>
       <result property="ename" column="ENAME"/>
       <result property="esex" column="ESEX"/>
       <result property="birthday" column="BIRTHDAY"/>
       <result property="address" column="ADDRESS"/>
       <result property="dept.id" column="ID"/>
       <result property="dept.dname" column="DNAME"/>
       <result property="dept.createtime" column="CREATETIME"/>
     </resultMap> -->

  这个是级联查询  一次性把两个表的内容都累出来

<!--<resultMap type="employee" id="emplist">
       <id property="ids" column="IDS"/>
       <result property="ename" column="ENAME"/>
       <result property="esex" column="ESEX"/>
       <result property="birthday" column="BIRTHDAY"/>
       <result property="address" column="ADDRESS"/>
       <association property="dept" resultMap="deptlist"></association>
     </resultMap>
     <resultMap type="dept" id="deptlist">
        <result property="id" column="ID"/>
       <result property="dname" column="DNAME"/>
       <result property="createtime" column="CREATETIME"/>
     </resultMap> -->

  

 <!--  <resultMap type="employee" id="emplists">
       <association property="dept" column="deptid" select="mapper.DeptMapper.selectDept"></association>
     </resultMap>
     <select id="selectAllEmployee" resultMap="emplists" >
         SELECT * FROM EMPLOYEE E JOIN DEPT D ON E.DEPTID=D.ID
     </select> -->

  <resultMap type="employee" id="myemp">
        <id column="ids" property="ids"/>
        <result column="ename" property="ename" />
        <result column="esex" property="esex" />
        <result column="birthday" property="birthday"/>
        <result column="address" property="address"/>
        <association property="dept" column="deptid" select="mapper.DeptMapper.selectDept"></association>
     </resultMap>

     <select id="selectEmployee" resultMap="myemp">
       select * from employee e where e.ids=#{id}
     </select>

  这两个都是分布查询   多对一也是这样的  只是association 换成collection

 <resultMap type="dept" id="mydept">
       <id property="id" column="id"/>
       <result property="dname" column="dname"/>
       <result property="createtime" column="createtime"/>
       <collection property="list" column="id" select="mapper.EmployeeMapper.selectOneEmployee"></collection>
    </resultMap>
    <select id="selectOneDept" parameterType="Integer"  resultMap="mydept">
        select * from dept d where d.id=#{id}
    </select>

  多对一查询

联合查询一般用分布查询  resultmap标签中 type类型就是想要查询的类型  id随便写 是resultmap的唯一标识,collection标签中 property 属性指定的是联合查询的是哪个 column传入的指定的值 工select查询

resultmap 是制定封装规则  所以定义哪个对象的封装规则 那么 这个标签的type属性就写哪个

时间: 2024-10-30 02:13:02

Mybatis 一对一 多对一的相关文章

mybatis 一对一,一对多,多对多关系映射查询操作

定义两个类(对应数据库内两张表) User ,Account,每个Account属于一个User User类 及其 对应的IUserDao package com.itheima.domain; import java.io.Serializable; import java.util.Date; import java.util.List; public class User implements Serializable { private Integer id; private Strin

mybatis一对一映射配置详解

听说mybatis一对一有三种写法,今天我试了一下. 数据库表准备 为了偷懒,我直接就拿用户权限菜单里的菜单表和菜单与权限的中间表做实现,他们原来是多对多的关系,这边我假设这两张表是一对一. 表  gl_role_men:id,role_id,menu_id     --------->  实体类 GlrolemenuModel  private String id;private String roleId;private String menuId;private MenuModel men

Mybatis的多对多映射

一.Mybatis的多对多映射 本例讲述使用mybatis开发过程中常见的多对多映射查询案例.只抽取关键代码和mapper文件中的关键sql和配置,详细的工程搭建和Mybatis详细的流程代码可参见<Mybatis入门和简单Demo>和<Mybatis的CRUD案例> 完整的工程代码已上传至https://files.cnblogs.com/files/jiyukai/MyBatis.zip 案例:查询xx同学所选择的多个不同选修课,查询xx选修课被多少同学选修 步骤1.建表脚本,

mybatis一对一关联关系映射

mybatis一对一关联关系映射 在关联关系中,有一对一,一对多,多对多三种关联关系. 一对一关系:在操作上,任意一方引入对方的主键作为外键. 一对多关系:在"多"的一方添加"一"的一方的主键作为外键. 多对多关系:产生中间表引入两张表的主键作为外键,将两个主键作为联合主键或者引入新的字段作为这个中间表的主键. 一对一关联关系 例如person和IDcard,一个人只有一个身份证号,而一个身份证号只对应一个人. 以上是person表和IDcard表. public

(6)MyBatis之多对多关联

引言 MyBatis之多对多 1 创建我们的数据库 2 创建Student持久化类 3 创建Course持久化类 4 创建CS持久化类用于查询某学生某课程的成绩 5 根据需求编写映射文件 51 Student的映射文件 52 Course映射文件 53 CS映射文件 6 编写SQL相应的语句 61 查询选修某课程的所有学生一个Course对象里面有Student数组 62 查询某学生查询的课程信息一个Student对象里面有Course数组 63 查询某学生某课程的成绩信息 7 编写测试类 71

MyBatis之多对一关系

MyBatis之多对一和一对多 多对一理解 多对一理解起来就是多张表中的数据对应一个数据,比如Student表中多个学生对应Teacher表中的一位老师.(这里指的是学校里上课的老师)通俗理解就是一个老师可以教多个学生 MyBatis中在处理多对一的sql语句方式有两种,一种是以子查询的方式,另一种是联表查询 子查询sql语句简单,但是映射关系相对复杂 下面是在MyBatis中StudentMapper.xml用子查询方式进行多对一查询 <mapper namespace="com.wcz

Mybatis 一对一,一对多,多对一,多对多的理解

First (一对一) 首先我来说下一对一的理解,就是一个班主任只属于一个班级,一个班级也只能有一个班主任.好吧这就是对于一对一的理解 怎么来实现呢? 这里我介绍了两种方式: 一种是:使用嵌套结果映射来处理重复的联合结果的子集 另一种呢是:通过执行另外一个SQL映射语句来返回预期的复杂类型 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis

Mybatis一对一、一对多、多对多

1.什么是MyBatis? MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .2013年11月迁移到Github. iBATIS一词来源于"internet"和"abatis"的组合,是一个基于Java的持久层框架.iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO). MyB

Mybatis 一对一、一对多、多对一

灵感来源于:https://www.cnblogs.com/xdp-gacl/p/4264440.html 转发自:https://www.cnblogs.com/hq233/p/6752335.html 首先  数据库量表之间字段关系(没有主外键) studentmajor表的id字段对应student表里major字段 两个实体类 package com.model; import java.util.Date; public class Student { private Integer