美文网首页
mybatis的嵌套查询(单独查询)

mybatis的嵌套查询(单独查询)

作者: Apple_Boy | 来源:发表于2019-08-12 23:59 被阅读0次

    这里使用student和clazz之间的关系进行说明,一个student对应一个clazz,一个clazz对应多个学生
    student类如下:

    public class Student {
    
        private Integer id;
        private String name;
        private String sex;
        private Integer age;
        // 关联的Clazz对象
        private Clazz clazz;
    }
    对应数据库字段:
    id  name  sex  age  clazz_id
    

    clazz类如下:

    public class Clazz {
        
        private Integer id;
        private String code;
        private List<Student> students;
    }
    对应数据库字段:
    id code
    

    下面的selectStudent会去resultMap中找出对应的字段,然后将column="clazz_id"当做条件传入selectClazzWithId,property属性对应的实体类当中的Clazz clazz属性,javaType表示该属性对应的类型名称

    <!-- 映射学生对象的resultMap -->
      <resultMap id="studentResultMap" type="org.fkit.domain.Student">
          <id property="id" column="id" />
          <result property="name" column="name"/>
          <result property="sex" column="sex"/>
          <result property="age" column="age"/>
          <!-- 关联映射 -->
          <association property="clazz" column="clazz_id" 
          javaType="org.fkit.domain.Clazz"
          select="selectClazzWithId"/>
        </resultMap>
        
      <!-- 根据班级id查询班级 -->
      <select id="selectClazzWithId" resultType="org.fkit.domain.Clazz">
        SELECT * FROM TB_CLAZZ where id = #{id}
      </select>
      
      <!-- 查询所有学生信息 -->
      <select id="selectStudent" resultMap="studentResultMap">
        SELECT * FROM TB_STUDENT
      </select>
    

    下面的selectClazz会去resultMap中找出对应的字段,然后将column="id"当做条件传入selectStudentWithId,property属性对应的实体类当中的Student cstudent属性,ofType表示的是集合当中类型

     <!-- 映射班级对象的resultMap -->
      <resultMap id="clazzResultMap" type="org.fkit.domain.Clazz">
          <id property="id" column="id" />
          <result property="code" column="code"/>
          <!-- 班级的学生属性,因为一个班级有多个学生,所以该属性是一个集合 -->
          <collection property="students" javaType="ArrayList"
          column="id" ofType="org.fkit.domain.Student" 
          select="selectStudentWithId"/>
        </resultMap>
        
        <!-- 根据班级id查询学生 -->
        <select id="selectStudentWithId" resultType="org.fkit.domain.Student">
            SELECT * FROM TB_STUDENT where clazz_id = #{id}
        </select>
        
        <!-- 查询所有班级信息 -->
      <select id="selectClazz" resultMap="clazzResultMap">
        SELECT * FROM TB_CLAZZ
      </select>
    

    相关文章

      网友评论

          本文标题:mybatis的嵌套查询(单独查询)

          本文链接:https://www.haomeiwen.com/subject/jzkmjctx.html