求助关于mysql数据查询逻辑写入Java还是sql

DANGEVILE 2019-03-15 11:10:31
1. 问题情况:: 数据库两张表: 业务类型 a 表 业务表 b 表
2. 要求返回数据类型:json {'mes':'Y', {'业务类型':'业务类型名称1', 'info':{['业务数据':'业务名1','':''],['':业务数据'','':'']},{'业务类型':'业务类型名称2'}}

很抱歉 json写的不全对这是我的错,就是返回json里面有多个业务类型,每个业务类型里面有多个业务信息。

3.接收数据方法:

public Map getList(.../(这前面个是那个什么request之类,返回到jsp的页面), @requestBody String param) {
// 所有参数全部传入param , 然后在转化成json, 用map传输去查询,大体就是这样。
// 很抱歉,代码没有在这个电脑上
}
```

```
我的逻辑:先查出业务类型, 形成List<Map<String, Object>> list, 遍历list, 根据业务类型id查询业务信息, map.put()''然后返回所有信息。逻辑用java代码处理的
sql : SELECT a.name FROM a WHERE + 条件
SELECT b,name FROM b WHERE + 条件
两句sql


之后我被我司大佬一顿叼,

__


因为这个都是大佬做的, 我只负责写点小代码,
非常感谢看到这里的老师们, 我已经迷茫了,不知道代码该如何写下去了
我的问题:1.关于sql中 a.* 这种写法是不是不推荐的?因为我之前有看到说并不推荐写*号的
2.像之前上面的查询逻辑。我是应该分开写,还是像图片中大佬说的写在一起,效率会高一些?
3.请勿将内容转发扩散, 我想好好活着,不想被大佬叼死


非常感谢感谢各位老师的指导, 感激不尽,无以为报,谢谢
...全文
310 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
金梦凯旋王 2019-03-19
  • 打赏
  • 举报
回复
当然是sql语句了。。。。
亲爱的Joe 2019-03-18
  • 打赏
  • 举报
回复
引用 2 楼 DANGEVILE 的回复:
[quote=引用 1 楼 亲爱的Joe 的回复:]
1.确实不建议直接查询*,因为这样默认会查出所有的字段,无论是否用到。不过一般问题不大,建表的时候如果本来就没有创建多余字段,写* 也无所谓。
2.你大佬说的是对的。他那个sql一次查询出来需要的数据,而你select 一句又select,查询了两次,当然效率不好了。
你老大还不错,很认真的跟你讨论具体问题,看样子你可以老老实实的哪里不懂问哪里

.首先非常感谢您的回复, 当然这个方法的返回类型是一个多层json, 如果一条语句查出来,有没有更好的办法处理成需要返回的json类型呢,谢谢[/quote]
非常简单,你怎么不问问你家老大呢?
比方说两个pojo 对应两个数据库表结构,PojoA.java ,PojoB.java
现在要联合查询这两个表所有字段然后一起返回给前端,
就再写一个自定义的类,其属性类型就分别为PojoA和PojoB,然后添加setter和getter.
最后以json格式返回就好了
DANGEVILE 2019-03-18
  • 打赏
  • 举报
回复
引用 1 楼 亲爱的Joe 的回复:
1.确实不建议直接查询*,因为这样默认会查出所有的字段,无论是否用到。不过一般问题不大,建表的时候如果本来就没有创建多余字段,写* 也无所谓。 2.你大佬说的是对的。他那个sql一次查询出来需要的数据,而你select 一句又select,查询了两次,当然效率不好了。 你老大还不错,很认真的跟你讨论具体问题,看样子你可以老老实实的哪里不懂问哪里
.首先非常感谢您的回复, 当然这个方法的返回类型是一个多层json, 如果一条语句查出来,有没有更好的办法处理成需要返回的json类型呢,谢谢
DANGEVILE 2019-03-18
  • 打赏
  • 举报
回复
引用 5 楼 stacksoverflow 的回复:
你大佬说的没错,能在数据库处理就不要再Java端处理,除非你有很强有力的理由。 至于几个POJO还是MAP,无所谓,怎么方便怎么来。
怎么方便怎么来, 我也是这样觉得, 所以我在寻找,如果没有实体类的情况下, 返回以上类型json数据,是怎样写才最优化呢, 非常感谢,
DANGEVILE 2019-03-18
  • 打赏
  • 举报
回复
引用 6 楼 nayi_224 的回复:
var json = '{"mes":"Y","data":[{"type":"类型1","info":[{"col1":"111","col2":"222"},{"col1":"1111","col2":"2222"}]},{"type":"类型2","info":[{"col1":"333","col2":"444"},{"col1":"3333","col2":"4444"}]}]}';
alert(JSON.parse(json).data[0]["type"]);
你的json格式应该是这样的吧,我个人更倾向于不把类型单独提出来,而是直接放到数据列表中。通过sql中对数据进行排序,再用分析函数划出分界点,再用js一次遍历得出以上形式的数据。
嗯嗯,谢谢,谢谢,,也就是在前端页面js在进行具体的数据划分和显示嘛
nayi_224 2019-03-18
  • 打赏
  • 举报
回复
var json = '{"mes":"Y","data":[{"type":"类型1","info":[{"col1":"111","col2":"222"},{"col1":"1111","col2":"2222"}]},{"type":"类型2","info":[{"col1":"333","col2":"444"},{"col1":"3333","col2":"4444"}]}]}';
alert(JSON.parse(json).data[0]["type"]);
你的json格式应该是这样的吧,我个人更倾向于不把类型单独提出来,而是直接放到数据列表中。通过sql中对数据进行排序,再用分析函数划出分界点,再用js一次遍历得出以上形式的数据。
stacksoverflow 2019-03-18
  • 打赏
  • 举报
回复
你大佬说的没错,能在数据库处理就不要再Java端处理,除非你有很强有力的理由。 至于几个POJO还是MAP,无所谓,怎么方便怎么来。
DANGEVILE 2019-03-18
  • 打赏
  • 举报
回复
引用 3 楼 亲爱的Joe 的回复:
[quote=引用 2 楼 DANGEVILE 的回复:] [quote=引用 1 楼 亲爱的Joe 的回复:] 1.确实不建议直接查询*,因为这样默认会查出所有的字段,无论是否用到。不过一般问题不大,建表的时候如果本来就没有创建多余字段,写* 也无所谓。 2.你大佬说的是对的。他那个sql一次查询出来需要的数据,而你select 一句又select,查询了两次,当然效率不好了。 你老大还不错,很认真的跟你讨论具体问题,看样子你可以老老实实的哪里不懂问哪里
.首先非常感谢您的回复, 当然这个方法的返回类型是一个多层json, 如果一条语句查出来,有没有更好的办法处理成需要返回的json类型呢,谢谢[/quote] 非常简单,你怎么不问问你家老大呢? 比方说两个pojo 对应两个数据库表结构,PojoA.java ,PojoB.java 现在要联合查询这两个表所有字段然后一起返回给前端, 就再写一个自定义的类,其属性类型就分别为PojoA和PojoB,然后添加setter和getter. 最后以json格式返回就好了[/quote] 谢谢,谢谢,学到一个新方法呢,我不知道我理解的对不对, 您的那个PojoA.java是表对应的实体类吧, 我们那大佬不用PojoA.java, 全部是Map来处理 我是分开写的, 所以他说写成一句, 其中数据库处理的要比Java的更有效率, 但是拿回来的数据是不是还是要在Java处理哇,,所以我才想到,这里有很多大神的
亲爱的Joe 2019-03-16
  • 打赏
  • 举报
回复
1.确实不建议直接查询*,因为这样默认会查出所有的字段,无论是否用到。不过一般问题不大,建表的时候如果本来就没有创建多余字段,写* 也无所谓。
2.你大佬说的是对的。他那个sql一次查询出来需要的数据,而你select 一句又select,查询了两次,当然效率不好了。
你老大还不错,很认真的跟你讨论具体问题,看样子你可以老老实实的哪里不懂问哪里

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧