mybatis mapper把传递来的参数当作字段写入结果集中

<resultMap id="StatsResultMap" type="com.extracme.evshare.business.entity.StationStatsInfo" >
    <result column="Station_Id" jdbcType="VARCHAR" property="StationID" />
    <result column="Station_Electricity" jdbcType="DOUBLE" property="StationElectricity" />
    <result column="StartTime"  property="StartTime" />
    <result column="EndTime" property="EndTime" />
    <collection property="EquipmentStatsInfos" javaType="ArrayList"  select="com.extracme.evshare.business.tserver.mapper.EquipmentStatsMapper.queryEquipmentStatsInfoByStatsId"
                column="{StationStatsId=stationStatsId,EndTime=EndTime,StartTime=StartTime}" ofType="com.extracme.evshare.business.entity.EquipmentStatsInfo">
     </collection>
   
  </resultMap>


-------------mapper把传递来的参数当作字段写入结果集中----------


 <select id="queryStationStats" parameterType="java.util.Map" resultMap="StatsResultMap">
   
    select
     # {startTime,jdbcType=VARCHAR} as StartTime,
     # {endTime,jdbcType=VARCHAR} as EndTime,
     Station_Stats_Id stationStatsId ,
     Station_Id
    from station_stats
    where 1=1
     <if test="stationId != null and stationId !='' " >
       and Station_Id = #{stationId,jdbcType=VARCHAR}
     </if>
    <if test="startTime != null and startTime !='' ">
    and UNIX_TIMESTAMP(Start_Time) >= UNIX_TIMESTAMP(#{startTime,jdbcType=VARCHAR})
   </if>
   <if test="endTime != null and endTime !='' ">
     and UNIX_TIMESTAMP(End_Time) <= UNIX_TIMESTAMP(#{endTime,jdbcType=CARCHAR}) 
   </if>
    <!--  GROUP BY stationStatsId WITH ROLLUP -->
  </select>

ps:求站的总电量,站下各个设备的总量以及设备下各个接口的总量;一个站在每天会insert一条记录:时间段内query如下

SELECT
 s.Station_Stats_Id,
  c.Connector_Stats_Id,e.Equipment_Stats_Id,
  s.Station_Id,s.Station_Electricity,
  e.Equipment_Id,e.Equipment_Electricity,
  c.Connector_Id,c.Connector_Electricity
FROM
  station_stats s
inner JOIN equipment_stats e ON s.Station_Stats_Id = e.Station_Stats_Id
inner JOIN connector_stats c ON e.Equipment_Stats_Id = c.Equipment_Stats_Id
where s.Station_Id=720 #and s.Start_Time>'2017-07-15 00:00:00' and s.End_Time<'2017-07-18 00:00:00'

AND UNIX_TIMESTAMP(s.Start_Time) >= UNIX_TIMESTAMP('2017-07-15')
    AND UNIX_TIMESTAMP(s.End_Time) <= UNIX_TIMESTAMP('2017-07-18')
GROUP BY s.Station_Stats_Id,s.Station_Id,e.Equipment_Id,c.Connector_Id


最终优化之后数据结构:

SELECT
  s.Station_Id,
  #s.Station_Electricity,
  e.Equipment_Id,
  #e.Equipment_Electricity,
  c.Connector_Id,
  SUM(s.Station_Electricity) Station_Electricity,
  SUM(e.Equipment_Electricity) Equipment_Electricity,
  SUM(c.Connector_Electricity) Connector_Electricity
FROM
  station_stats s
inner JOIN equipment_stats e ON s.Station_Stats_Id = e.Station_Stats_Id
inner JOIN connector_stats c ON e.Equipment_Stats_Id = c.Equipment_Stats_Id
where s.Station_Id=720 #and s.Start_Time>'2017-07-15 00:00:00' and s.End_Time<'2017-07-18 00:00:00'

AND UNIX_TIMESTAMP(s.Start_Time) > UNIX_TIMESTAMP('2017-07-15')
    AND UNIX_TIMESTAMP(s.End_Time) < UNIX_TIMESTAMP('2017-07-18')
GROUP BY s.Station_Id,e.Equipment_Id,c.Connector_Id

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值