HTSLH
2020-03-10 09:38
采纳率: 100%
浏览 191
已采纳

一个关于mybaits的小问题(Sql Server数据库)

直接上问题

需要通过查询返回一个map集合,唯一参数是一个传入了一个时间

Map<key(年月,例如"202003"),value(list集合)> get(String year(例如"2020"))

数据库中时间是保存的时间戳格式
我希望只操作一次数据库,来将所有符合年份的数据拿到,并按照key(月份),value(符合key的年份的数据)返回,

比如输入2020年,2020年现在时间是 "2020/3/10",我希望Map集合中有三条数据,key是这三个月,value是这三个月的数据,如果是2019年,我希望有12条数据

现在关键点是开在,不知道如何让数据库根据年份查出数据后,再根据月份自动分组存入到集合里面,因为唯一传入参数是year年份,所以想问一下大佬怎么根据年份实现自动分月查询

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 「已注销」 2020-03-10 22:47
    已采纳

    这不就是按照年份查询所有记录么,本来就只查一次啊,至于你最后需要返回的map,在程序里自己构建啊,记录都拿到了,遍历结果集,获取所有月份,为了去重,保存在set中,然后遍历set,构建最终map的key和对应value的list集合,然后再遍历一次结果集,给对应的list中add就完事了。
    话说,你不会是想直接用sql查出最终要的结果吧,劝你还是别这么折腾数据库的好o(╯□╰)o

    已采纳该答案
    打赏 评论
  • 「已注销」 2020-03-11 09:14

    写存储过程吧,存储过程中再使用函数对数据进行处理,但是直接返回你想要的map格式基本不可能。你可以在函数中将每个月份与对应数据拼凑在一起如{年月:对应数据以逗号分割;;年月:对应数据以逗号分割...},在java端直接对这条数据进行处理这样你在java端的处理量会小一点。你这么复杂的数据我建议你在数据库端进行预先处理。

    打赏 评论

相关推荐 更多相似问题