• 关联查询


    7.1比如根据班级id查询班级信息(带老师的信息)一对一或多对一

      way1:SQL语句中使用联表查询

             *实体类中需要添加属性(数据类型为实体类名)

             *映射文件中使用association标签(属性:property(实体类中添加的属性名)、javaType(添加的属性所在的实体类的全类名))

     1 <select id="getClazz" resultMap="myMap">
     2           select * from class c,teacher t where c.teacher_id=t.t_id and c_id=#{cid}   
     3     </select>
     4     <resultMap type="com.zhiyou.clg.bean.Clazz" id="myMap">
     5         <id column="c_id" property="id"/>
     6         <result column="c_name" property="name"/>
     7         <result column="teacher_id" property="teacherid"/>
     8         <association property="teacher" javaType="com.zhiyou.clg.bean.Teacher">
     9             <id column="t_id" property="id"/>
    10             <result column="t_name" property="name"/>
    11         </association>
    12     </resultMap>

    way2:嵌套查询(查询的结果为其他查询的条件)

      *实体类中需要添加属性(数据类型为实体类名)

      *映射文件中使用association标签(属性:property、javaType(查询到的结果,此时作为查询条件)、 column、select(另一映射的语句的id,即另一select标签的id))

     1 <select id="getClazz" resultMap="myMap2">
     2           select * from class where c_id=#{cid}   
     3     </select>
     4     <select id="getTeacher" parameterType="int" resultType="com.zhiyou.clg.bean.Teacher">
     5            select t_id id,t_name name from teacher where t_id=#{tid}   
     6     </select>
     7     <resultMap type="com.zhiyou.clg.bean.Clazz" id="myMap2">
     8         <id column="c_id" property="id"/>
     9         <result column="c_name" property="name"/>
    10         <result column="teacher_id" property="teacherid"/>
    11         <association property="teacher"   javaType="com.zhiyou.clg.bean.Teacher" 
    12                     column="teacher_id" select="getTeacher">
    13             <id column="t_id" property="id"/>
    14             <result column="t_name" property="name"/>
    15         </association>
    16     </resultMap>

    7.2比如根据班级id查询班级信息(带班里学生的信息)一对多

      way1:SQL语句中使用联表查询

        *实体类中添加属性(数据类型为集合,泛型为实体类名)

        *映射文件中使用collection标签(属性:property(添加的属性名)、ofType(集合泛型的实体 类的全类名))

     1 <select id="getClazz" resultMap="myMap3">
     2 select *from class c,teacher t,student s where c.c_id=s.class_id and c.teacher_id=t.t_id and c.c_id=#{cid}  
     3     </select>
     4     <resultMap type="com.zhiyou.clg.bean.Clazz" id="myMap3">
     5         <id column="c_id" property="id"/>
     6         <result column="c_name" property="name"/>
     7         <result column="teacher_id" property="teacherid"/>
     8         <association property="teacher" javaType="com.zhiyou.clg.bean.Teacher">
     9             <id column="t_id" property="id"/>
    10             <result column="t_name" property="name"/>
    11         </association>
    12         <collection property="students" ofType="com.zhiyou.clg.bean.Student">
    13             <id column="s_id" property="id"/>
    14             <result column="s_name" property="name"/>
    15             <result column="class_id" property="cid"/>
    16         </collection>
    17     </resultMap> -->

      way2:嵌套查询(查询的结果为其他查询的条件)

        *实体类中添加属性(数据类型为集合,泛型为实体类名)

        *映射文件中使用collection标签(属性:property、ofType、column、select)

     1 <select id="getClazz" resultMap="myMap4">
     2           select * from class where c_id=#{cid}   
     3     </select>
     4     <select id="getTeacher" parameterType="int" resultType="com.zhiyou.clg.bean.Teacher">
     5            select t_id id,t_name name from teacher where t_id=#{tid}   
     6     </select>
     7     <select id="getStudent" parameterType="int" resultType="com.zhiyou.clg.bean.Student">
     8             select s_id id,s_name name,class_id cid from student where class_id=#{cid}
     9     </select>
    10     <resultMap type="com.zhiyou.clg.bean.Clazz" id="myMap4">
    11         <id column="c_id" property="id"/>
    12         <result column="c_name" property="name"/>
    13         <result column="teacher_id" property="teacherid"/>
    14         <association property="teacher"   javaType="com.zhiyou.clg.bean.Teacher" 
    15                     column="teacher_id" select="getTeacher">
    16             <id column="t_id" property="id"/>
    17             <result column="t_name" property="name"/>
    18         </association>
    19         <collection property="students" ofType="com.zhiyou.clg.bean.Student"
    20                      column="c_id" select="getStudent">
    21             <id column="s_id" property="id"/>
    22             <result column="s_name" property="name"/>
    23             <result column="class_id" property="cid"/>
    24         </collection>
    25     </resultMap>
  • 相关阅读:
    pow()函数结果强制转化为int造成误差的分析
    warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
    博客园鼠标点击特效代码
    codeblocks更改颜色主题
    codeblocks1712设置中文
    SQl
    项目中nodejs包高效升级插件npm-check-updates
    正则表达式的整理(将金钱数变成带有千分位)
    从一个数组中过滤出另外一个数组中相关字段相等的数据
    IONIC3 打包安卓apk详细过程(大量图文)
  • 原文地址:https://www.cnblogs.com/lwgok1003/p/11442695.html
Copyright © 2020-2023  润新知