美文网首页
MyBatis的级联属性、联合、分步查询

MyBatis的级联属性、联合、分步查询

作者: 学编程的小屁孩 | 来源:发表于2020-03-13 15:10 被阅读0次

在说级联属性查询之前,先把需要的表和数据创建好。

/创建员工表/
CREATE TABLE tbl_employee(
id int(11) AUTO_INCREMENT PRIMARY KEY,
last_name varchar(25),
gender char(1),
email varchar(255)
);
/
创建部门表/
create table tbl_deptno(
id int(11) primary key auto_increment,
dept_name varchar(255)
);
/在员工表中添加部门id列/
alter table tbl_employee add column dept_id int(11);
/
设置外键/
alter table tbl_employee add constraint fk_emp_dept foreign key(dept_id) references tbl_deptno(id);

员工表数据


image.png

部门表数据


image.png

为两张表分别创建实体类

public class Employee {

private Integer id;
private String last_name;
private String gender;
private String email;
private Deptno deptno;
//get,set方法省略....

}
public class Deptno {

private Integer id;
private String deptName;

//get,set方法省略....
}
现在我们有个需求就是查出某个员工及部门信息。

首先mapper接口中定义方法

public interface EmployeeMapperPlus {
//根据员工id查询
public Employee findEmpAndDept(Integer id);
}
sql映射文件

1、使用级联属性查询

<resultMap type="com.luohp.mybatis.bean.Employee" id="empAndDept_map">
<id column="id" property="id"/>
<result column="lastName" property="last_name"/>
<result column="gender" property="gender"/>
<result column="email" property="email"/>

<result column="did" property="deptno.id"/>
<result column="dname" property="deptno.deptName"/>
</resultMap>

<select id="findEmpAndDept" resultMap="empAndDept_map">
SELECT
e.id id,
e.last_name lastName,
e.gender gender,
e.email email,
d.id did,
d.dept_name dname
FROM
bl_employee e
LEFT JOIN tbl_deptno d ON e.dept_id = d.id
WHERE e.id=#{id}
</select>
2、使用association(联合)查询

<resultMap type="com.luohp.mybatis.bean.Employee" id="empAndDept_map">
<id column="id" property="id"/>
<result column="lastName" property="last_name"/>
<result column="gender" property="gender"/>
<result column="email" property="email"/>

<association property="deptno" javaType="Deptno">
<id column="did" property="id"/>
<result column="dname" property="deptName"/>
</association>
</resultMap>
<select id="findEmpAndDept" resultMap="empAndDept_map">
SELECT
e.id id,
e.last_name lastName,
e.gender gender,
e.email email,
d.id did,
d.dept_name dname
FROM
bl_employee e
LEFT JOIN tbl_deptno d ON e.dept_id = d.id
WHERE e.id=#{id}
</select>
3、分步查询(支持延迟加载)

<resultMap type="com.luohp.mybatis.bean.Employee" id="empAndDept_map1">
<id column="id" property="id"/>
<result column="lastName" property="last_name"/>
<result column="gender" property="gender"/>
<result column="email" property="email"/>


<association property="deptno" column="deptId"
select="com.luohp.mybatis.dao.DeptnoMapper.findDept" >
</association>
</resultMap>

<select id="findById" resultMap="empAndDept_map1" >
select
id,last_name lastName,gender,email,dept_id deptId
from
tbl_employee
where
id=#{id}
</select>

相关文章

  • MyBatis的级联属性、联合、分步查询

    在说级联属性查询之前,先把需要的表和数据创建好。 /创建员工表/CREATE TABLE tbl_employee...

  • Mybatis - association 分步查询

    场景在实际的开发过程中,往往会从多个表里获取数据。此时需要用到多表操作。如查询用户的个人信息及部门信息。 实例Us...

  • MyBatis级联查询

    一对一级联 首先我们看两个实体,国家和城市: 一个城市对应一个国家,是一对一的关系,一对一关系查询使用associ...

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

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

  • mybatis联合多表查询

    数据库表 pms_user_tea表保存教师用户信息 pms_exp表保存实验室信息查询信息:所有教师下的所有实验...

  • mybatis多表联合查询

    开发环境:postgresql数据库、idea工具、easy code插件、springboot+mybatis数...

  • Mybatis Collection联合查询

    因为在做图书管理系统的时候,有一个页面,显示一条图书数据,显示多条评论数据。 做到这里就很纠结了,使用了Contr...

  • Mybatis联合查询积累

    要求如下: 从订单表中查询到订单id(ordersId),再通过查询中间表找到旅客id(travellerId),...

  • mybatis多条件联合查询

    mybatis多条件联合查询可以在后边直接跟条件: criteria.andUserNameEqualTo(use...

  • Mybatis中LambdaQueryWrapper和Lambd

    使用mybatis-plus查询的时候经常会使用到QueryWrapper来构建查询条件,然而我们在写查询属性的时...

网友评论

      本文标题:MyBatis的级联属性、联合、分步查询

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