千家信息网

SpringBoot如何实现多表查询功能

发表于:2024-10-02 作者:千家信息网编辑
千家信息网最后更新 2024年10月02日,这篇文章主要介绍SpringBoot如何实现多表查询功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!实体类:Emp 类:@Data@NoArgsConstructor@All
千家信息网最后更新 2024年10月02日SpringBoot如何实现多表查询功能

这篇文章主要介绍SpringBoot如何实现多表查询功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

实体类:

Emp 类:

@Data@NoArgsConstructor@AllArgsConstructorpublic 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@NoArgsConstructorpublic class Dept {    private int id;    private String dname;}

Mapper接口

EmpMapper:

//这个注解表示这是一个mybatis的mapper类@Mapper@Repositorypublic interface EmpMapper {    void addEmp(Emp emp);    void deleteEmp(int id);    void updateEmp(Emp emp);    Emp queryEmpById(int id);    List queryEmpList();}

DeptMapper:

@Mapper@Repositorypublic interface DeptMapper {    List queryDeptList(@Param("cid") int cid);}

EmpMapper.xml 配置文件

                                                    

DeptMapper.xml配置文件

        

前端页面(部分)

                                                                                    编辑              删除          

查询结果:

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

我们下面使用association嵌套映射

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


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

EmpMapper:

                                                                                    

上述执行结果如下

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

修改配置文件以及实体类

@Data@AllArgsConstructor@NoArgsConstructorpublic class Dept {    private int pid;    private String dname;}
                                                                                    

执行结果:

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

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

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

以上是"SpringBoot如何实现多表查询功能"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

0