SpringBoot进行多表查询功能的实现

网友投稿 982 2022-12-08

SpringBoot进行多表查询功能的实现

SpringBoot进行多表查询功能的实现

实体类:

Emp 类:

@Data

@NoArgsConstructor

@AllArgsConstructor

public class Emp {

private int id;

private String lastname;

private String email;

private int gender;

private int did;

private Dept dept;

private Date birth = new Date();

}

Dept类:

@Data

@AllArgsConstructor

@NoArgsCDJegKSFjonstructor

public class Dept {

private int id;

private String dname;

}

Mapper接口

EmpMapper:

//这个注解表示这是一个mybatis的mapper类

@Mapper

@Repository

public interface EmpMapper {

void addEmp(Emp emp);

void deleteEmp(int id);

void updateEmp(Emp emp);

Emp queryEmpById(int id);

List queryEmpList();

}

DeptMapper:

@Mapper

@Repository

public interface DeptMapper {

List queryDeptList(@Param("cid") int cid);

}

EmpMapper.xml 配置文件

select * from emp_dept.employees

DeptMapper.xml配置文件

select * from emp_dept.depaDJegKSFjrtment where id = #{id};

前端页面(部分)

编辑

删除

查询结果:

上述我们采用的是分步查询。

我们下面使用association嵌套映射

其实这里查询会出现一个奇怪的事情,

因为我们现在两个表中都有id这个字段,所以我们在映射时使用去查找部门的id时就发现查出来的是员工的id,就是因为员工的id与部门的id字段名重名了?

EmpMapper:

select emp.*,dept.* from emp_dept.employees emp,emp_dept.department dept where emp.did = dept.id

上述执行结果如下

我们发现是员工id,我们现在将数据库中部门表的id改为pid

修改配置文件以及实体类

@Data

@AllArgsConstructor

@NoArgsConstructor

public class Dept {

private int pid;

private String dname;

}

select emp.*,dept.* from emp_dept.employees emp,emp_dept.department dept where emp.did = dept.pid

执行结果:

我们就发现查询的就是部门的id了

但是针对上面这个问题我们将部门的id字段名改为did (did在员工表中也存在) 此时我们再去查询又发现还是可以把部门id查询出来

这个问题就离谱,难道是因为id是主键,did不是主键的原因?就离谱

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:物联网微信小程序开发(基于物联网的微信小程序)
下一篇:一小时迅速入门Mybatis之初识篇
相关文章

 发表评论

暂时没有评论,来抢沙发吧~