学习技能之使用Map集合收参代替对象

本文介绍了一种在MyBatis中使用Map替代DTO进行数据接收的方法,通过SQL查询各省用户数量,并以折线图展示。讨论了Map收参的优劣,展示了从数据库查询到前端展示的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求:通过查询数据库,统计每个省份的用户数量,以折线图的形式展示

整理思路 :

1 数据以折线图的形式展示在页面上,需要将每个省份的人数通过ajax传递到页面
2 如何将数据响应回页面呢? 通过SQL语句查询 以省份分组获取数据
3 那查询之后的数据该用什么存储呢? 首先想到的是另外定义一个DTO包含 省份,数量两个属性刚好对应查询结果,这样写似乎也挺好的
在这里插入图片描述
然而吾有一问:如果有很多个类似的查询需求呢?难道要每一个查询都创建一个DTO吗? 创建出来的DTO只有收参的时候使用一次,这样是不是在浪费各种资源!!!!
emmm 说得有道理 ,

mybatis提供了通过Map收参的机制

今天就来用Map直接取代对象形式的收参
注意事项

  1. 如果使用Map 返回值必须是List
  2. Map的 json 格式和对象是一样的
使用
  1. 创建dao接口 书写查询方法
    在这里插入图片描述
  2. 书写SQL,返回类型为map 获取省份以及每个省份的人数
    在这里插入图片描述
    3.页面展示时只需要每个省份的人数,所以我将人数取出来在响应回页面,当然也可以将查询得到的map响应回页面,然后在页面获取map中的人数数据

查询的时候给数据书写的别名为value 在此处通过map.get()方法获取value的值 存储到List集合中
在这里插入图片描述
打印一下获取到的map是不是我想要的 看到了才放心 (截取一部分数据)
在这里插入图片描述
4. 通过controller层调用业务层方法将数据响应回页面`
在这里插入图片描述
5. 书写折线图相关页面代码
先书写一个div块

<div id="proCount" style="width:900px;height:300px;"></div>

借助ajax发送请求获取数据

var ProChart = echarts.init(document.getElementById("proCount"));
       $.ajax({
           url:"${pageContext.request.contextPath}/user/getProCount",
           type:"post",
           dataType:"json",
           success:function(result) {
               //指定图标的配置项和数据
               console.log(result)
               var option = {
                   //图标标题
                   title: {
                       text: "持明法洲各省份人数"
                   },
                   //工具栏  暂时没有用到
                   tooltip: {},
                   //数据所代表的含义
                   legend: {
                       data: ['数量']
                   },
                   //X轴 坐标的名称
                   xAxis: {
                       data: ['云南', '内蒙古', '北京', '台湾', '吉林', '四川', '天津', '宁夏', '安徽', '山东',
                           '山西', '广东', '广西', '新疆'
                           , '江苏', '江西', '河北', '河南', '浙江', '海南', '湖北', '湖南', '澳门', '甘肃', '福建'
                           , '西藏', '贵州', '辽宁', '重庆', '陕西', '青海', '香港', '黑龙江']
                   },
                   //y轴单位程度根据代码自动生成
                   yAxis: {},
                   //给X轴赋值
                   series: [{
                       name: '数量',
                       //line  为折线图  bar为柱状图  pie为饼状图
                       type: 'line',
                       data: result
                   }]
               };
               ProChart.setOption(option);
           }
       });
书写完毕 看一下页面显示效果

在这里插入图片描述

总结 Map收参

这次是用map收参主要是替换DTO方式接收查询结果。

  1. map收参之后转换成json格式与使用对象接收参数转换json格式是一样的,所以后续的使用上没有区别
  2. 书写SQL语句时 注意此时的resultType 是map(map是java.uitl.Map的别名 ,也可以直接写全类名)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值