app开发者平台在数字化时代的重要性与发展趋势解析
982
2022-12-08
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
}
DeptMapper:
@Mapper
@Repository
public interface DeptMapper {
List
}
EmpMapper.xml 配置文件
select * from emp_dept.employees
DeptMapper.xml配置文件
select * from emp_dept.depaDJegKSFjrtment where id = #{id};
前端页面(部分)
查询结果:
上述我们采用的是分步查询。
我们下面使用association嵌套映射
其实这里查询会出现一个奇怪的事情,
因为我们现在两个表中都有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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~