Mybatis複雜sql總結
阿新 • • 發佈:2020-07-18
1.mybatis中插入list引數,舉例:
sql層級的需求是:在in中插入的list
sql程式碼如下:(當然這個函式也要注意mysql的LPAD函式的學習,以及關於時間函式的學習)
SELECT r.`INDI_NO`,LPAD(HOUR(r.`DATA_DATE`),2,0) hours,ROUND(SUM(ABS(r.`RVAL`)),2) AS rval FROM r_data_currxxx r WHERE r.`MS_NO` IN ('123','456','789','134','135') AND r.`INDI_NO` = 'B003' AND MINUTE(r.`DATA_DATE`) = 0 AND SECOND(r.`DATA_DATE`) = 0 AND DATE_FORMAT(r.DATA_DATE,'%Y%m%d') = DATE_FORMAT(NOW(),'%Y%m%d') GROUP BY HOUR(r.`DATA_DATE`) ORDER BY hours
程式碼中,in中的幾個引數就是在mybatis中傳入的list,那麼mybatis層級該如何書寫呢?上程式碼
SELECT r.`INDI_NO`,LPAD(HOUR(r.`DATA_DATE`),2,0) hours,ROUND(SUM(ABS(r.`RVAL`)),2) AS rval FROM r_data_currxxx r WHERE r.`MS_NO` IN <foreach collection="list" item="list" open="(" separator="," close=")" index="index"> #{list} </foreach> AND r.`INDI_NO` = #{xxxx} AND MINUTE(r.`DATA_DATE`) = 0 AND SECOND(r.`DATA_DATE`) = 0 AND DATE_FORMAT(r.DATA_DATE,'%Y%m%d') = DATE_FORMAT(NOW(),'%Y%m%d') GROUP BY HOUR(r.`DATA_DATE`) ORDER BY hours
List<Map<String,Object>> selectPowder(@Param("list") List<String> list,@Param("xxxx") String xxxx);