zoukankan      html  css  js  c++  java
  • mybatis一对多关系的关联查询

    问题描述:实现两张表的关联查询

    学生表:

    班级表:

    要实现学生管理信息中有所在班级的名称,即如下图所示

    1.对应学生表的pojo类写全班级表中的字段(适用于要连接的表字段较少的情况)

    sql语句直接在mapper接口里用注解的方式写就可以了,一目了然

    2.使用resultmap手动关联映射

    student的pojo类写一个Clazz类型的字段,封装班级信息

    然后用xml的方式写sql语句,在写sql语句之前我们要在配置文件里声明xml的路径,以及为了方便,为pojo类起别名

        <resultMap id="smap" type="student">
            <id property="id" column="sid"/>
            <result property="name" column="name"/>
            <result property="phone" column="phone"/>
            <association property="clazz" javaType="clazz">
                <id property="id" column="cid"/>
                <result property="title" column="title"/>
            </association>
        </resultMap>
    
        <select id="selectAll" resultMap="smap">
            select s.id sid,s.name,s.phone,c.id cid,c.title title
            from student s left join clazz c on s.clazz_id=c.id
        </select>

    associattion 是关系,代表一个学生对象中包含有一个班级对象,javaType 属性表示当前对象

    3.使用resultType自动映射配合别名实现

    这种方式是最简易的,但是要注意别名因为包含特殊符号,我们需要加上引号

    效果图

    另外还有N+1方式,那样是写两条sql语句,resultMap中关联(association)另外一个对象的语句

    (N+1模式案例:Mybatis关联查询)

    还有在业务层中处理逻辑,即先用一条sql语句

    select * from student

    查询出学生集合,通过学生的班级Id去调用

    select * from clazz where id=#{id}

    查询出对应的班级信息,再遍历学生集合封装到student对象中

  • 相关阅读:
    eclipse配置自动提示EXTJS和jQurey
    Java用jdom.jar解析读取XML文件信息
    Hibernate配置XML连接数据库
    【codeforces】ZeptoLab Code Rush 2015 E 跳跃表? D kmp还不错的题
    各种语言版本的输出本身源代码的程序
    原地归并排序
    c/c++ static
    【程序员的自我修养——链接、装载与库】笔记
    【清华大学OS公开课】
    学习需要记录才行啊
  • 原文地址:https://www.cnblogs.com/wutongshu-master/p/10962247.html
Copyright © 2011-2022 走看看