mybatis日期查询
- 一、項目需求
- 需求先了解
- 草圖說邏輯
- 二、技術點實現
- 參數獲取
- mybaitis獲取數據
- 后端返回Json數據
- Sql語句
- 一、項目需求
一、項目需求
需求先了解
- 選擇時間間隔 - 點擊’查詢按鈕’查詢數據 - 用echarts可視化數據。
草圖說邏輯
- 先用一張草圖來說明本篇文章的邏輯
注:本篇博客只討論,mybatis查詢數據技術,如你想了解相關技術請移步到我之前的博文:
- 關于日期控件的使用:WdatePicker日期控件的使用
- 關于ajax發送post請求:ajax post 服務器用request.getParameter(“”)拿不到值
二、技術點實現
參數獲取
- 從路徑中拿到需要的參數(不是本章重點,故省略)
mybaitis獲取數據
- 搭好框架,調用方法,利用mybatis獲取數據庫數據(不是本章重點,故省略)
后端返回Json數據
- 上圖中,dateMap是mybatis映射方法getHistoryDataByDate的參數 存入了三個參數:動態表名 ‘tableName’=tableName,起始日期 ‘dStart’=dStart,結束日期 ‘dEnd’=dEnd。
Sql語句
- 首先,看看我的sql語句是怎么寫的
為了讓大家看的清晰點,上一張圖是有必要的
- 然后,再說明一下Sql語句里的重點
1.為什么使用Map類型傳參?
答:使用Map類型傳參,在獲取value時,可以直接寫key,如#{dStart},表示獲取Map中key=dStart的值。
或許你會有疑問,為什么不用注解方式傳參?像這樣:
Map<String, Object> getData(@Param(value="tableName") String tableName);
如果真的這么干了,當你需要傳多個參數時,方法參數列表就會拖的很長,不美觀,像這樣:
List<Object>getHistoryDataByDate(@Param(value="tableName")String tableName,@Param(value="dStart") Date dStart,@Param(value="dEnd") Date dEnd);
總之,使用Map傳參,優美,簡潔,大方,值得信賴。
2.為什么使用${tableName},而不是用#{tableName}?
答:這是mybatis預編譯與非預編譯問題。
${}會被mybatis替換成參數值。如:我傳入的tableName=User,就會select xxx from User,從而實現了動態添加表名。
#{}會被替換成問號?,如:select xxx from User where time between ? and ?
參考博客:淺談 Mybatis中的 ${ } 和 #{ }的區別
3.if test 語句怎么使用?
- 判斷條件寫在一起會怎么呢,像這樣
No Picture You Say A JB:
類型轉化異常:
java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String
參考文章:mybatis異常invalid comparison: java.util.Date and java.lang.String
4.<![CDATA[ ]]>是什么?會什么要使用它?
答:<![CDATA[ ]]>里面的語句不用解析,該是啥樣子就是啥樣子,不會被Mybatis轉譯掉。
5.為什么傳入的起止日期類型是Date類型就可以查詢數據庫的datetime類型日期呢?
答:因為java中的java.util.Date 對應mysql中的datetime
6.返回類型為什么是Map?為什么方法的返回值又是List<Objtect>呢?
首先,若是想要返回list類型參數,即不能直接指定為List,或者AarrayList,因為在這里。
然后,為什么指定了resultType=”java.util.HashMap”,方法會用List<Objtect>接收了呢?原因mybatis有默認返回類型。
最后,看看我resultType=”java.util.HashMap”的返回結果
可以看出list里有四條數據,每條數據都是一個map<String,Object>.
當你你遇到“ A query was run and no Result Maps were found for the Mapped Statement ‘cn.edu.hdu.Dao.FactoryMapper.getHistoryDataByDate’. It’s likely that neither a Result Type nor a Result Map was specified.”,就是這個原因。
總結
以上是生活随笔為你收集整理的mybatis日期查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 金山文档服务器暂不可用,wps金山文档在
- 下一篇: 李力刚:职场上如何成功推销自己