Java 在使用 sql 语句 group by 时,遇到的一个困惑

2019-08-25 09:25:35 +08:00
 champloo

有一个销售记录表 包含了一些如下的内容 sellnotes: name money date (名称) (销售总额金额) (日期) 商品 A 100 2019 年 7 月 25 日 商品 B 200 2019 年 7 月 25 日 商品 C 300 2019 年 7 月 25 日 商品 A 6600 2019 年 7 月 24 日 商品 B 99800 2019 年 7 月 24 日

最后想实现的是:通过 select name,sum(money) from Table where date>'2019 年 7 月 23 日' group by name desc 该语句得到的数据集 来源 A 99900 来源 B 6800 来源 C 300

然后返回前端进行展示,现在卡在 sql 语句会写,但是返回类型,用什么去放这 3 条数据,我查了一下资料还是不明白,有老哥给个方案吗 我想的办法是用 List<商品> 去放,这样做是对的吗

5042 次点击
所在节点    Java
11 条回复
champloo
2019-08-25 09:27:28 +08:00
空格被缩进了,表内容就是 3 个字段,分别是商品,销售额,日期,一行记录的意思是某天某商品销售总额,现在想把某几天的销售总额拿来汇总,进行展示
champloo
2019-08-25 09:44:22 +08:00
刚刚查了一下怎么放代码,大家点一下 gist,蟹蟹
https://gist.github.com/purechamploo/0274d619b1cea89180e7b784c5cf6996
Raymon111111
2019-08-25 10:11:06 +08:00
如果你用的是 mybatis + xml 的方式去写这个 sql

语句写成 select name, sum(money) as money ...

那么接它返回值的类只要有 name 和 money 即可, resultType 那个属性里的类
champloo
2019-08-25 10:24:38 +08:00
@Raymon111111 蟹蟹回复,我想我找到了我的问题的答案,你讲的 as money 只要实体类有这个字段就能返回,这一点解决了我的问题,只是我并不是在 mybatis 中使用,是使用 greendao 框架在 Android 自带的数据库中使用 group by 语句,我相信在 greendao 中也能用同样的方式解决这个问题,蟹蟹拉
litanyue
2019-08-25 10:24:50 +08:00
sum(money) as money.
sum(money)不能被映射到结果的类里,因为类里没有 sum 这个成员。
choice4
2019-08-25 12:08:57 +08:00
加个 DTO
BaiMax
2019-08-25 12:56:06 +08:00
一般来说,用 List<Object[]>
champloo
2019-08-25 14:14:52 +08:00
@litanyue 谢谢回复,我目前的做法是,android 自带的 SQLite 可以用游标去取返回行的具体数据,我就不把它映射成对象了。但是一会儿我会试试能不能,因为 money 是类的一个属性
@choice4 DTO 我下去了解一下
@BaiMax 谢谢回复,用这种方式去接,list 集合每个元素放的是不同对象,取出来要进行相应的转型,很合理
deco
2019-08-29 09:51:37 +08:00
不是有 ORM 框架或者自己封装的 DAO 层来解决,比如 MyBatis、Hibernate....他们不是可以自动将 sql 的数据转为 List<Obeject>
TraceurMW
2019-09-01 19:44:34 +08:00
List<Map<String,Object>>
champloo
2019-09-02 17:26:58 +08:00
@deco 谢谢回复,就是使用的 ORM 框架,android 的 greendao
@TraceurMW 谢谢回复,明白了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/594862

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX