Ibatis對日期的處理


  最近在項目中出現兩種情況(因為項目比較早,經歷各個版本的改動,所有設計不一致),第一種:數據庫中某一字段為Date類型,對應的bean中的類型為java.util.Date,所有在對應的映射中會出現字段和屬性類型不匹配為題;第二種情況為數據庫中為Date類型,對應的字符串為String類型,這樣在映射時也會出現字符類型不匹配的問題。

  后來查看了相關資料,對於第一種解決辦法是:在對於的屬性后面加:Date,使其可以映射為數據庫的Date類型。如:#last_date:Date#;第二種的解決辦法是在第一種的基礎上自己考慮得出應用數據庫的轉換函數,將String類型轉為Date類型;如:to_date(#last_date#,"yyyy-mm-dd")。試想一下,如果出現數據庫中為字符類型而 bean為Date類型,也可以用to_char()進行轉換,不過這種情況應該比較少。

  下面對ibatis中日期和字符串之間的映射做一下總結:

  1. bean中定義為String,數據庫字段類型為String,直接查詢字段

  此時在ibatis在對結果進行封裝時,相當於直接把值轉化成了字符串,就像在java中調用了toString方法一樣。

  2.bean定義為Date,數據庫字段類型為Date,查詢使用#last_date:Date#。
  此時在對結果進行封裝時得到的是一個DATE對象,注意此時將輸出時,它的日期格式是java里面的日期格式,而不是它存放在數據庫里面的格式。所有要在字段后面加:Date,如:#last_date:Date#。

  3.bean定義為Date,數據庫字段類型為String,查詢使用to_char(#last_date#,’yyyy-mm-dd’)
  此時封裝的時候就相當於從字符串映射到字符串,輸出last_date的格式取決於我們在to_char中設置的格式。

  4.bean定義為String,數據庫字段類型為Date,查詢使用to_date(#last_date#,’yyyy-mm-dd’)

  此時封裝的時候就相當於日期映射到日期,輸出last_date的格式取決於我們在to_date中設置的格式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM