SSH框架中利用@Query注解进行联表查询

欢迎点击「算法与编程之美」↑关注我们!

本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。

1 问题描述

最近完成了一个用SSH框架做的学生银行卡更改系统,在做的过程中也遇到了很多困难,其中有一个就是通过联表查询,并把数据交给前端。以前学的主要是SSM框架中利用Mybatis进行联表查询,突然来一个SSH框架还真是有一点懵了。

2 问题分析

这个问题就是要通过一个一对一的联表查询,就是我这里有一张学生信息表和一张银行卡的信息表。我要通过查询这两张表,将学生和对应银行卡对应之后,将JSON格式的数据交给前端。这就涉及到了两个问题,如何联表查询和如何让查出来的数据呈现为JSON格式。

3 解决方案

刚开始的时候,还不知道可以用@Query注解来写联表查询的SQL语句,并让这个查询语句让注解的方法去执行。也不知道如何将查询到的数据已键值对的方式供前端使用。之后在老师的点播和百度的帮助下自己也解决了这个问题。

首先,这是我在dao层接口中的联表查询的方法,这个方法要把它设置为Object[]数组类型的List集合,给方法一个@Query的注解,并将注解中value赋值为联表查询的SQL语句,后面还有跟一个nativeQuery = true。自己再创建一个实体类BankCardApplyModel,将查询的属性全部放在里面,以便于后面给前端提供JSON数据,比如:

接下来就是在Service层将数据转化为JSON格式,我的方法是通过遍历刚刚查询的数据,创建一个BankCardApplyModel数据类型的集合,ArrayList可以很方便的进行增加和删减集合内元素的操作,再定义一个Object[]数据类型的集合变量tmpList,给tmpList赋值为联表查询的结果,用循环遍历tmpList,在循环中定义一个BankCardApplyModel的变量来接收遍历的值,并且其遍历的顺序和你的SQL语句的查询顺序是完全相同的,list.add(model)这句代码就是刚刚说的增加集合内元素,将遍历的结果添加到list里面去,这样list里面的数据就全部为JSON格式的数据,我们也就达到了我们的目的,代码如下:

4 总结

学习是一个拓展的过程,只有不断地学习更好的方法,自己的代码才会的到优化,也会被别人认可,每次自己学会一点东西,都会觉得自己很有成就感可能这就是兴趣的力量吧,希望本文章能帮助那些和我遇到相同问题的小伙伴。

温馨提示:点击页面右下角“写留言”发表评论,期待您的参与!期待您的转发!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181108G00BED00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券