SpringBoot实现联表查询的代码详解

 更新时间:2024年05月19日 16:59:02   作者:小小-菠萝  
这篇文章主要介绍了SpringBoot中如何实现联表查询,文中通过代码示例和图文结合的方式讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下

1、要求

现在我们有这样一张user表、xue_yuan表和ban_ji表

我们希望可以查询到所有的用户:要求显示出学院名称、老师名称以及班级名称而不是其id。但是若只查询user表无法满足我们的要求,因此需要联表查询;同时要求实现分页和模糊查询

2、解决办法

2.1 SQL语句:可以直接创建一个新的SQL语句来实现

LEFT JOIN(左连接)   RIGHT JOIN(右连接) INNER JOIN(内连接)

Left join:即左连接,是以左表为基础,根据ON后给出的两表的条件将两表连接起来。结果会将左表所有的查询信息列出,而右表只列出ON后条件与左表满足的部分。左连接全称为左外连接,是外连接的一种。

​Right join:即右连接,是以右表为基础,根据ON后给出的两表的条件将两表连接起来。结果会将右表所有的查询信息列出,而左表只列出ON后条件与右表满足的部分。右连接全称为右外连接,是外连接的一种。

Inner join:即内连接,同时将两表作为参考对象,根据ON后给出的两表的条件将两表连接起来。结果则是两表同时满足ON后的条件的部分才会列出。

SELECT a.username,b.id FROM USER AS a LEFT JOIN ban_ji AS b ON a.ban_ji_id=b.id

2.2 IPage对象中的属性

1、首先在user的实体类中本来是没有banJiName、xueYuanName、teacherName属性的,但是我们有希望可以进行展示,所以要用到一个注解

@TableFile

可以用来进行映射关系

也可以用来添加一个数据库表中不存在的字段

这里我们需要用到第二个属性,在user实体类中进行添加

 // 非数据库列 班级名字
@TableFile(exist=fale)
private String banJiName;
// 非数据库列 学院名字
@TableField(exist = false)
private String xueYuanName;
// 非数据库列 老师名字
@TableField(exist = false)
private String teacherName;

2、进行分页和模糊查询,我们这里将会得到一个IPage对象,通过其中的gerRecords()方可以得到所有的User对象

在这里我们可以获得ban_ji_id,xue_yuan_id_teacher_id,我们可以创建banJiService,xueYuanService,teacherService通过这些属性,我们可以直接在service对象中获取其对应的名称

IPage<User> page=new Page<userVo.getPage(),userVo.getLimit()>
 
//创建条件构造器
QueryWrapper<User> queryWrapper=new QueryWrapper<>();
//进行模糊查询 :根据用户名和手机号查询    queryWrapper.like(StringUtils.isNotEmpty(userVo.getUsername()),"username",userVo.getUsername());
queryWrapper.like(StringUtils.isNotEmpty(userVo.getPhone()),"phone",userVo.getPhone());
//进行查询
userService.page(page,queryWrapper);
//此时在IPage对象page中已经有了所有的数据 page.getRecords()
 
 
for(User user :page.getRecords())
{
   //判断ban_ji_name
   if(user.getBanJiId()!=null)
   {
      BanJi banji=banJiService.getById(user.getBanJiId);
      user.setBanJiName(banji.getName());
   }
   //为学院名称赋值
   if(user.getXueYuanId()!=null)
   {
      XueYuan xueyuan = xueYuanService.getById(user.getXueYuanId());
      user.setXueYuanName(xueyuan.getName());
            }
   //为老师名称赋值
   if(user.getTeacherId()!=null)
   {
      User teacher = userService.getById(user.getTeacherId());
      user.setTeacherName(teacher.getUsername());
    }
}

这里的DataView是我床架你的一个返回结果类

以上就是SpringBoot实现联表查询的代码详解的详细内容,更多关于SpringBoot联表查询的资料请关注脚本之家其它相关文章!

相关文章

  • SpringBoot中整合JodConverter实现文件在线预览功能

    SpringBoot中整合JodConverter实现文件在线预览功能

    Spring Boot JodConverter是一个基于Spring Boot框架的文档转换工具,它使用JodConverter库来实现文档格式之间的转换,本文主要介绍了SpringBoot中整合JodConverter实现文件在线预览功能,需要的朋友可以参考下
    2024-04-04
  • springcloud config配置读取优先级过程详解

    springcloud config配置读取优先级过程详解

    这篇文章主要介绍了springcloud config配置读取优先级过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • @Bean注解和@Configuration、@Component注解组合使用的区别

    @Bean注解和@Configuration、@Component注解组合使用的区别

    这篇文章主要介绍了@Bean注解和@Configuration、@Component注解组合使用的区别,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • logback的DuplicateMessageFilter日志过滤操作源码解读

    logback的DuplicateMessageFilter日志过滤操作源码解读

    这篇文章主要为大家介绍了logback的DuplicateMessageFilter日志过滤操作源码解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • 图解Java中插入排序算法的原理与实现

    图解Java中插入排序算法的原理与实现

    插入排序的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。本文将通过图片详解插入排序的原理及实现,需要的可以参考一下
    2022-08-08
  • java.lang.String和java.util.NClob互相转换方式

    java.lang.String和java.util.NClob互相转换方式

    这篇文章主要介绍了java.lang.String和java.util.NClob互相转换方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • java实现一个简单的网络爬虫代码示例

    java实现一个简单的网络爬虫代码示例

    这篇文章主要介绍了java实现一个简单的网络爬虫代码示例,还是挺不错的,这里分享给大家,需要的朋友可以参考下。
    2017-11-11
  • java中static的用法及注意点

    java中static的用法及注意点

    在本篇文章里小编给大家整理的是一篇关于java中static的用法及注意点,有兴趣的朋友们可以学习下。
    2021-03-03
  • Java中==与equals的区别小结

    Java中==与equals的区别小结

    这篇文章主要介绍了Java中==与equals的区别小结,本文总结结论:== 与 equals()比较的内容是不同的,equals()方式是String类中的方法,它用于比较两个对象引用所指的内容是否相等,而 == 比较的是两个对象引用的地址是否相等,需要的朋友可以参考下
    2015-06-06
  • Failed to execute goal org...的解决办法

    Failed to execute goal org...的解决办法

    这篇文章主要介绍了Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1的解决办法的相关资料,需要的朋友可以参考下
    2017-06-06

最新评论