''''''''''''' 2023-03-15 11:06 采纳率: 66.7%
浏览 30
已结题

关于SQL语句查询返回Map值错误的问题

从数据库查询corp_id和set_date两个字段希望返回值是Map类型并且以corp_id为key以set_date为值,但是最后的结果是corp_id为key,(corp_id,set_date)整个作为值,那么若只要得出Map<String,String>或者Map<String,Date>的返回类型应如何修改?

img


接口

img


产生的错误

img

  • 写回答

4条回答 默认 最新

  • MarkHan_ 2023-03-15 11:27
    关注

    该回答引用GPTᴼᴾᴱᴺᴬᴵ
    你可以尝试使用SQL中的CONCAT函数来将corp_id和set_date拼接为一个字符串,然后再以corp_id作为Map的key,拼接后的字符串作为Map的value。具体的SQL语句如下:

    SELECT corp_id, CONCAT(corp_id, '_', set_date) as set_date_str FROM your_table;
    
    
    

    这里使用了下划线将corp_id和set_date拼接起来,你也可以选择其他的分隔符,只要能够将拼接后的字符串唯一地对应到每一行的记录即可。

    在Spring Boot中,你可以使用JdbcTemplate来执行SQL语句,并将查询结果封装为Map类型的对象。代码示例如下:

    @Autowired
    private JdbcTemplate jdbcTemplate;
    
    public Map<String, String> queryMap() {
        List<Map<String, Object>> rows = jdbcTemplate.queryForList("SELECT corp_id, CONCAT(corp_id, '_', set_date) as set_date_str FROM your_table");
        Map<String, String> resultMap = new HashMap<>();
        for (Map<String, Object> row : rows) {
            resultMap.put((String)row.get("corp_id"), (String)row.get("set_date_str"));
        }
        return resultMap;
    }
    
    
    

    在这个示例中,使用JdbcTemplate执行SQL语句并得到查询结果。然后使用for循环遍历查询结果,将每行的记录按照corp_id为key,set_date_str为value存入Map对象中。最终返回Map对象即可。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 3月23日
  • 已采纳回答 3月15日
  • 创建了问题 3月15日

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分