首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
champloo
V2EX  ›  Java

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

  •  
  •   champloo · 145 天前 · 2994 次点击
    这是一个创建于 145 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有一个销售记录表 包含了一些如下的内容 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<商品> 去放,这样做是对的吗

    11 回复  |  直到 2019-09-02 17:26:58 +08:00
    champloo
        1
    champloo   145 天前
    空格被缩进了,表内容就是 3 个字段,分别是商品,销售额,日期,一行记录的意思是某天某商品销售总额,现在想把某几天的销售总额拿来汇总,进行展示
    champloo
        2
    champloo   145 天前
    刚刚查了一下怎么放代码,大家点一下 gist,蟹蟹
    Raymon111111
        3
    Raymon111111   145 天前
    如果你用的是 mybatis + xml 的方式去写这个 sql

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

    那么接它返回值的类只要有 name 和 money 即可, resultType 那个属性里的类
    champloo
        4
    champloo   145 天前
    @Raymon111111 蟹蟹回复,我想我找到了我的问题的答案,你讲的 as money 只要实体类有这个字段就能返回,这一点解决了我的问题,只是我并不是在 mybatis 中使用,是使用 greendao 框架在 Android 自带的数据库中使用 group by 语句,我相信在 greendao 中也能用同样的方式解决这个问题,蟹蟹拉
    litanyue
        5
    litanyue   145 天前
    sum(money) as money.
    sum(money)不能被映射到结果的类里,因为类里没有 sum 这个成员。
    choice4
        6
    choice4   145 天前 via Android
    加个 DTO
    BaiMax
        7
    BaiMax   145 天前 via Android
    一般来说,用 List<Object[]>
    champloo
        8
    champloo   145 天前 via Android
    @litanyue 谢谢回复,我目前的做法是,android 自带的 SQLite 可以用游标去取返回行的具体数据,我就不把它映射成对象了。但是一会儿我会试试能不能,因为 money 是类的一个属性
    @choice4 DTO 我下去了解一下
    @BaiMax 谢谢回复,用这种方式去接,list 集合每个元素放的是不同对象,取出来要进行相应的转型,很合理
    deco
        9
    deco   141 天前
    不是有 ORM 框架或者自己封装的 DAO 层来解决,比如 MyBatis、Hibernate....他们不是可以自动将 sql 的数据转为 List<Obeject>
    TraceurMW
        10
    TraceurMW   138 天前
    List<Map<String,Object>>
    champloo
        11
    champloo   137 天前
    @deco 谢谢回复,就是使用的 ORM 框架,android 的 greendao
    @TraceurMW 谢谢回复,明白了
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1839 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 25ms · UTC 00:58 · PVG 08:58 · LAX 16:58 · JFK 19:58
    ♥ Do have faith in what you're doing.