美文网首页
mybatis中的关联查询和连接查询

mybatis中的关联查询和连接查询

作者: 忒无聊了叭 | 来源:发表于2019-12-25 21:53 被阅读0次

实体类:

public class Employee {
    private Integer id;
    private Integer employeeNumber;
    private String name;
    private String gender;
    private Date birthday;
    private String telephone;
    private String email;
    private String address;
    private String photo;
    private String education;
    private Integer departmentNumber;
    private Integer positionNumber;
    private Date inTime;
    private String password;
    private String notes;
    
    //下面俩为两个实体类对象
    private Department department; //部门
    private Position position;      //职位

关联查询

以上面的实体类为例:

当查询employee的对象时,这个对象中还有部门和职位两个对象,如果使用连接查询的话,相当于三个表连接起来,比较复杂,我们这时候就可以使用关联查询进行处理。

<resultMap id="EmployeeMsg2" type="cn.aynu.entity.Employee">
        <id column="id" property="id"/>
        <result column="name" property="name"/>
        <result column="employee_number" property="employeeNumber"/>
        <result column="nameEmp" property="name"/>
        <result column="gender" property="gender"/>
        <result column="telephone" property="telephone"/>
        <association property="department" column="department_number" javaType="cn.aynu.entity.Department"
                     select="aaa"/>
        <association property="position"  column="position_number" javaType="cn.aynu.entity.Position"
                     select="bbb">
        </association>
    </resultMap>

    <select id="aaa" resultType="cn.aynu.entity.Department">
        select name from department where department_number = #{departmentNumber}
    </select>

    <select id="bbb" resultType="cn.aynu.entity.Position">
        select name from position where position_number = #{positionNumber}
    </select>

    <!--模糊查询结果-->
    <select id="selectEmpByName" resultMap="EmployeeMsg2">
        select *
        from
        history
        where name like '%' #{nameInput} '%' and
        department_number = <include refid="use3"/> and status = '在职'
        limit #{page.pageIndexStart},#{page.pageSize}
    </select>

    <sql id="use3">
        (select department_number
            from history where
            employee_number = #{employeeNumber}
            ) and position_number != '3003' and position_number != '3004'
    </sql>

注意,aaa和bbb标签会在映射文件中报错,但是不影响使用。这里的主查询是selectEmpByName,进行主查询的时候,也会进行关联查询,相当于访问数据库三次。关联查询的好处就是,不用进行表之间复杂的连接。

连接查询

连接查询,就是通过每个表之间相同的字段进行连接。这个优点就是只用访问一次数据库。

相关文章

  • mybatis中的关联查询和连接查询

    实体类: 关联查询 以上面的实体类为例: 当查询employee的对象时,这个对象中还有部门和职位两个对象,如果使...

  • 关于关联查询的处理

    mybatis关联查询配置有2种:关联嵌套结果,关联嵌套查询关联的查询过程中如果关联的表可能查到很多数据,应该考虑...

  • Mysql--连接查询和子查询

    连接查询和子查询 一、连接查询 1.1 概念 连接查询:也可以叫跨表查询,需要关联多个表进行查询 1.2 根据年代...

  • MyBatis 最佳实践篇 3:关联查询懒加载

    MyBatis 中联合查询可分为关联查询和关联结果两种方式(具体查看 Mybatis 文档篇 3.5:Mapper...

  • 多表关联查询定义,种类

    关联查询:连接查询、子查询、聚合查询 1.连接查询. 左外连结 左表的全部记录(部门表中的所有记录:demp方式1...

  • mybatis进阶2——关联查询

    关联查询代码参考mybatis-demo测试代码AssociationQueryTest.java 0.关联查询的...

  • MyBatis学习:MyBatis中的延迟加载

    MyBatis中的延迟加载。 1. 什么是延迟加载 例子:如果查询订单并且关联查询用户信息。如果先查询订单信息...

  • python面试题01

    1、什么是多表关联查询,有几种多表关联的查询方式,分别是什么? 多表关联查询概念: 多表关联查询分类:1.1内连接...

  • 2018-08-15 视图 事务 自关联查询

    自关联查询 自关联:自连接查询其实等同于连接查询, 需要两张表,只不过它的左表(父表)和右表(子表) 都是自己。做...

  • 数据库笔记-SQL子查询

    子查询:关联查询和非关联查询 子查询是「查询」中的「查询」,就是「嵌套查询」。 以 NBA 的SQL数据库文件为例...

网友评论

      本文标题:mybatis中的关联查询和连接查询

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