MyBatis時間戳查詢實戰指南

在 MyBatis 中通過時間戳(Timestamp)作為查詢條件,需注意數據庫時間類型與 Java 類型的映射。以下是具體實現方式:


一、Java 實體類與數據庫字段映射

  1. 實體類定義
    使用 java.sql.Timestampjava.time.LocalDateTime(推薦)類型:

    public class Order {private Long id;private LocalDateTime createTime; // 對應數據庫的 TIMESTAMP/DATETIME// getter/setter
    }
    
  2. 數據庫字段類型

    • MySQL: TIMESTAMPDATETIME
    • Oracle: TIMESTAMP
    • PostgreSQL: TIMESTAMP

二、XML 映射文件寫法

方式1:直接參數傳遞
<select id="selectByTimeRange" resultType="Order">SELECT * FROM orders WHERE create_time BETWEEN #{startTime} AND #{endTime}
</select>
方式2:動態條件(if 標簽)
<select id="selectByCondition" resultType="Order">SELECT * FROM orders<where><if test="startTime != null">AND create_time >= #{startTime}</if><if test="endTime != null">AND create_time <= #{endTime}</if></where>
</select>

三、接口方法與參數傳遞

場景1:精確時間查詢
// Mapper 接口方法
List<Order> selectByCreateTime(@Param("targetTime") LocalDateTime targetTime);// 調用示例
mapper.selectByCreateTime(LocalDateTime.of(2025, 7, 4, 0, 0));
場景2:時間范圍查詢
List<Order> selectByTimeRange(@Param("startTime") Timestamp startTime,@Param("endTime") Timestamp endTime
);// 調用示例(使用 java.sql.Timestamp)
mapper.selectByTimeRange(new Timestamp(System.currentTimeMillis() - 86400000), // 前一天new Timestamp(System.currentTimeMillis())            // 當前時間
);

四、特殊場景處理

1. 時區問題

若存在時區差異,可在 SQL 中轉換:

<select id="selectByUTC" resultType="Order">SELECT * FROM ordersWHERE CONVERT_TZ(create_time, '+00:00', '+08:00') = #{localTime}
</select>
2. 時間格式化查詢
<select id="selectByDate" resultType="Order">SELECT * FROM ordersWHERE DATE_FORMAT(create_time, '%Y-%m-%d') = #{dateStr}
</select>

五、注意事項

  1. 類型匹配:確保 Java 類型(如 LocalDateTime)與 JDBC 驅動兼容,MyBatis 3.4+ 默認支持 JSR-310 時間類型。
  2. 索引優化:對時間字段加索引可大幅提升范圍查詢性能。
  3. 參數傳遞:使用 @Param 注解明確參數名,避免 XML 中引用混亂。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/87552.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/87552.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/87552.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Verilog硬件語言學習筆記4】FPGA串口通信

串口通信是系統設計中比較基部分&#xff0c;其原理其實也很通俗易懂。單次建立通信會傳輸8個bit&#xff0c;其時序也很簡單&#xff0c;這里就不再贅述了。其對應的實例代碼如下所示&#xff1b; 首先是接受部分&#xff08;因為我的變量命名也很規范&#xff0c;通俗易懂&a…

Go 語言安裝教程(Windows 系統)

2025年07月02日 準備工作 確認系統為 Windows 7 及以上版本&#xff08;推薦 Windows 10/11&#xff09;。64 位系統選擇 amd64 版本安裝包&#xff0c;32 位系統選擇 386 版本。確保安裝目錄&#xff08;默認 C:\Program Files\Go\&#xff09;有至少 1GB 空間。 下載安裝包…

接口測試之postman

一、Postman功能簡介 3天精通Postman接口測試&#xff0c;全套項目實戰教程&#xff01;&#xff01; Postman是由Postdot Technologies公司打造的一款功能強大的調試HTTP接口的工具。在做接口測試的時候&#xff0c;Postman相當于一個客戶端&#xff0c;它可以模擬用戶發起的各…

【記錄】Ubuntu安裝Mysql

本文記錄Ubuntu系統下安裝Mysql 1 查看系統信息 lsb_release -a 2 使用apt下載安裝Mysql 1 打開終端,首先更新你的系統包索引,以確保所有包都是最新的 sudo apt update 2 安裝mysql服務器 sudo apt install mysql-server (也可以選擇對應的mysql-server 版本) 3 查看mysql狀…

【深度學習:進階篇】--4.1.循環神經網絡(改進)

RNN存在的問題&#xff1a;梯度爆炸&#xff0c;長期依賴參數量過大等問題 目錄 1.GRU(門控循環單元) 1.1.什么是GRU 1.2.直觀理解 1.3.本質解決問題 2.LSTM(長短記憶網絡) 2.1.作用 3.結構擴展與效率優化? 1.GRU(門控循環單元) 2014年&#xff0c;出現的算法&#x…

中心化錢包安全方案

先來看獨立的密鑰安全技術 1 自建或單租戶 CloudHSM 優點&#xff1a;密鑰永不出硬件&#xff0c;無法導出&#xff0c;只能對外提供公鑰。 交易時&#xff0c;外部應用把消息哈希傳進去簽名&#xff0c;再把簽好名的結果拿出來用。 這種方式安全性拉滿&#xff0c;但成本高、…

Android 實現底部彈窗

文章目錄在 Android 中創建優雅的底部選項彈窗 (BottomSheetDialogFragment) &#x1f4f1;第一步&#xff1a;設計底部彈窗的布局 &#x1f3a8;第二步&#xff1a;創建 BottomSheetDialogFragment 類 ??第三步&#xff1a;觸發并顯示底部彈窗 &#x1f680;在 Android 中創…

LAN8720 寄存器概覽和STM32 HAL庫讀寫測試

目錄 寄存器0x00:Basic Control Register&#xff08;BCR&#xff09;0x01:Basic Status Register&#xff08;BSR&#xff09; 連接測試寄存器讀寫測試 補充 寄存器 // 0x00:Basic Control Register&#xff08;BCR&#xff09; BIT15:Soft Reset 寫1復位&#xff0c;寫1之…

滲透測試深度分析:空密碼Administrator賬戶引發的安全風暴

滲透測試深度分析&#xff1a;空密碼Administrator賬戶引發的安全風暴0x01 測試背景 在內網滲透測試中&#xff0c;對Windows主機 192.168.1.98 使用 enum4linux 進行枚舉&#xff1a; enum4linux -u Administrator -p -a 192.168.1.98關鍵發現&#xff1a;Administrator賬戶空…

OpenCV CUDA模塊設備層-----高效地計算兩個 uint 類型值的帶權重平均值

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 OpenCV 的 CUDA 模塊&#xff08;cudev&#xff09; 中的一個設備端內聯函數&#xff0c;用于高效地計算兩個 uint 類型值的帶權重平均值。 該函…

[學習記錄]Unity毛發渲染[URP]-Shell基礎版

毛發&#xff0c;無論是人類的頭發、動物的皮毛&#xff0c;還是奇幻生物的絨毛&#xff0c;都是構成生命感和真實感不可或缺的元素。它對光線的獨特散射、吸收和反射&#xff0c;賦予了物體柔軟、蓬松、有生命力的質感。它不僅僅是讓角色看起來更“毛茸茸”那么簡單&#xff0…

數字孿生技術引領UI前端設計潮流:增強現實(AR)的集成應用

hello寶子們...我們是艾斯視覺擅長ui設計、前端開發、數字孿生、大數據、三維建模、三維動畫10年經驗!希望我的分享能幫助到您!如需幫助可以評論關注私信我們一起探討!致敬感謝感恩!一、引言&#xff1a;AR 與數字孿生融合的設計革新浪潮在體驗經濟與技術融合的雙重驅動下&…

碰一碰發視頻源碼搭建與定制化開發:支持OEM

在近場通信&#xff08;NFC&#xff09;技術與移動終端深度融合的背景下&#xff0c;“碰一碰發視頻” 功能憑借便捷的交互體驗&#xff0c;在商業推廣、信息傳遞等場景中快速落地。不同于標準化解決方案的黑盒模式&#xff0c;基于源碼的定制化開發能從底層優化傳輸效率、提升…

Ubuntu 24.04 安裝配置 Redis 7.0 開機自啟

下載源碼 wget https://download.redis.io/releases/redis-7.0.12.tar.gz安裝依賴 & 準備環境 sudo apt update && sudo apt upgrade -y sudo apt install -y build-essential tcl curl解壓 tar xzf redis-7.0.12.tar.gz編譯安裝 cd redis-7.0.12 make -j$(nproc) …

【Linux 系統】基礎IO——Linux中對文件的理解

13.基礎IO(1) 文章目錄13.基礎IO(1)文件的基本概念&#xff1a;內容與屬性文件的打開機制&#xff1a;fopen 和 open被打開的文件與磁盤文件的區別文件的內核數據結構文件與進程的交互方式標準輸入/輸出/錯誤與文件流系統調用與文件描述符文件打開模式&#xff08;r/w/a/a&…

Go調度器的搶占機制:從協作式到異步搶占的演進之路|Go語言進階(7)

想象一下這樣的場景&#xff1a;你在餐廳排隊等位&#xff0c;前面有個人點了餐卻一直霸占著座位玩手機&#xff0c;后面的人只能干等著。這就是Go早期版本面臨的問題——一個goroutine如果不主動讓出CPU&#xff0c;其他goroutine就只能餓著。 今天我們來聊聊Go調度器是如何解…

開源模型應用落地-讓AI更懂你的每一次交互-Mem0集成Qdrant、Neo4j與Streamlit的創新實踐(四)

一、前言 在人工智能迅速發展的今天,如何讓AI系統更懂“你”?答案或許藏在個性化的記憶管理之中。Mem0作為一個開源的記憶管理系統,正致力于為AI賦予長期記憶與個性化服務能力。通過結合高性能向量數據庫Qdrant、圖數據庫Neo4j的強大關系分析能力以及Streamlit的高效可視化交…

基于微信小程序的校園二手交易平臺、微信小程序校園二手商城源代碼+數據庫+使用說明,layui+微信小程序+Spring Boot

school-market 介紹 基于微信小程序的校園二手交易平臺 功能結構圖 軟件架構 系統分為三個端&#xff0c;分別是客戶端、管理端、服務端&#xff1b; 客戶端&#xff1a;使用原生微信小程序實現 管理端&#xff1a;使用Layui實現 服務端&#xff1a;使用Java SpringBoot…

IDEA與Gradle構建沖突,導致java重復類的解決方案

項目構建總是報錯&#xff1a;錯誤提示1&#xff1a;java:重復類或錯誤提示2&#xff1a;Internal error in the mapping processor: java.lang.RuntimeException: javax.annotation.processing.FilerException: Attempt to recreate a file排查發現build/generated/sources/an…

如何調節筆記本電腦亮度?其實有很多種方式可以調整亮度

長時間面對屏幕工作、學習或娛樂&#xff0c;很多人會感到眼睛干澀、疲勞&#xff0c;甚至出現視力下降等問題。其實&#xff0c;這些問題的背后&#xff0c;往往隱藏著一個看似簡單卻極易被忽視的設置—屏幕亮度。 合適的屏幕亮度不僅能提升視覺體驗&#xff0c;還能有效緩解…