mybatis plus時間判斷問題
mybatis plus時間判斷
<where>
<if test="startTime != null">
and eventtimestamp >= #{startTime,jdbcType=TIMESTAMP}
</if>
<if test="endTime != null">
and eventtimestamp < #{endTime} ,INTERVAL 1 DAY)
</if>
</where>方法一:使用xml 原生轉(zhuǎn)義的方式進(jìn)行轉(zhuǎn)義#
- 字符名稱 sql符號 轉(zhuǎn)義字符
- 大于號 > >
- 小于號 < <
- 不等于 <> <>
- 大于等于號 >= >=
- 小于等于號 <= <=
- 與 & &
- 單引號 ' '
- 雙引號 " "
<if test="startTime != null and endTime != null">
and change_time between #{startTime,jdbcType=TIMESTAMP} and #{endTime,jdbcType=TIMESTAMP}
</if>mybatis plus如何進(jìn)行時間日期的比較
獲取數(shù)據(jù)庫中跟當(dāng)前日期相等的記錄時,還是調(diào)用eq方法,所以實體類包括數(shù)據(jù)庫中的類型是Date,而不是DateTime,否則只能獲取相同時刻的數(shù)據(jù)。
pulbic void main(){
LocalDate now = LocalDate.now();
LambdaQueryWrapper<Ebbinghaus> queryWrapper = new LambdaQueryWrapper();
queryWrapper.eq(Ebbinghasu.getCreateTime,now);
ebbinghuas.list(queryWrapper);
}Mybatis-Plus的時間比較是基于數(shù)據(jù)庫的函數(shù)進(jìn)行的,而不是字符串的比較。在Mybatis-Plus中,可以使用Wrapper對象的ge、gt、le、lt方法來進(jìn)行時間的比較。
這些方法會根據(jù)數(shù)據(jù)庫的不同,生成相應(yīng)的SQL語句來實現(xiàn)時間的比較操作。所以,不需要將時間轉(zhuǎn)換為字符串進(jìn)行比較。
如果要進(jìn)行天數(shù)的比較最好還是通過LocalDate做為數(shù)據(jù)的類型,而不是LocalDateTime,否則比較的也只是大于當(dāng)前時刻,大于等于當(dāng)前時刻。
如果對數(shù)據(jù)的時刻值有操作需求,可以進(jìn)行以下設(shè)置:
@JsonFormat(pattern = "yyyy-MM-dd") private LocalDateTime createTime;
數(shù)據(jù)庫中對應(yīng)的字段類型設(shè)置為date,而不是datetime,這樣即可以比較天數(shù),又可以在時刻上有更為豐富的操作。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用SpringData同時訪問MySQL和Neo4j數(shù)據(jù)庫
本文通過使用SpringData在SpringBoot中配置MySQL和Neo4j雙數(shù)據(jù)源,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-08-08
使用spring+maven不同環(huán)境讀取配置方式
這篇文章主要介紹了使用spring+maven不同環(huán)境讀取配置方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08
Java多線程開發(fā)工具之CompletableFuture的應(yīng)用詳解
做Java編程,難免會遇到多線程的開發(fā),但是JDK8這個CompletableFuture類很多開發(fā)者目前還沒聽說過,但是這個類實在是太好用了,本文就來聊聊它的應(yīng)用吧2023-03-03

