1. 程式人生 > >Mybatis插入時間沒有時分秒只有年月日

Mybatis插入時間沒有時分秒只有年月日

起因

前幾天單元測試發現,資料庫中的日期型別欄位只插入了不帶時分秒的值。
問題所在

Debug下來確認,入庫前實體欄位裡存的時間值是正常的,立即猜測問題出在Mybatis裡。xxxMapper.xml裡是這麼寫的,

<if test="timeJoin != null">TIME_JOIN = #{timeJoin, jdbcType = DATE},</if>

推測

目測錯誤就是由”jdbcType = DATE”導致的。我去查看了一下Mybatis的TypeHandlerRegistry,發現關於時間型別的註冊有以下幾種:
TypeHandlerRegistry

測試

看到關於時間的JdbcType有TIMESTAMP、DATE和TIME,就用入參型別和JdbcType做交叉組合,得到如下測試結果:
測試結果

總結

由上述測試結果可以總結,如果傳入實體物件裡的欄位是java.util.Date或者java.sql.Date或者java.sql.Time或者java.sql.Timestamp,同時
(1) jdbcType並未指定,則返回日期和時分秒!

return new Date(sqlTimestamp.getTime());// Timestamp sqlTimestamp

(2) jdbcType指定為”JdbcType.DATE”,則只返回日期,不帶時分秒!

return new java.util.Date(sqlDate.getTime());// java.sql.Date sqlDate

(3) jdbcType指定為”JdbcType.TIME”,則只有時分秒有效!

return new Date(sqlTime.getTime());// java.sql.Time sqlTime

相關推薦

Mybatis插入時間沒有分秒只有年月日

起因 前幾天單元測試發現,資料庫中的日期型別欄位只插入了不帶時分秒的值。 Debug下來確認,入庫前實體欄位裡存的時間值是正常的,立即猜測問題出在Mybatis裡。xxxMapper.xml裡是這麼寫的, <if test="timeJoin !

mybatis中查詢oracle資料庫date型別的時間沒有分秒

    原因出在mybatis中的mapper.xml中物件的屬性對應的jdbcType=date,jdbcType=date對應的Java型別是java.sql.date,所以沒有時分秒。如果想顯示時分秒,物件的屬性對應的jdbcType應該設定成TIMESTAMP,例如:

mybatis對於時間分秒的處理

前言 每次前臺傳入關於時間的查詢,我總是很糾結,資料庫查詢時,對於時分秒到底是如何處理的,特此總結,如有錯誤請指正!!! 可以先了解sqlDate與utilDate的區別java.util.Date 與 java.sql.Date 與 String 的轉換 準備 mysq

解決資料庫中插入時間丟失分秒

java.util.Date轉換為java.sql.Date帶時分秒  java.util.Date需要轉換為java.sql.Date,常規的方式轉換過來只可以得到年月日,如若要取得時分秒,可以用Date的子類Timestamp Java在向資料庫中插入時間的時候,常

插入資料,儲存的date型別時間欄位的資料只有年月日沒有分秒的問題

本人使用的hibernate實體類對映方式,在實體類中date型別的註解方式,預設生成的是@Temporal(TemporalType.DATE) 在儲存的時候,此欄位資料就只保留了年月日 將註解方式更改為@Temporal(TemporalType.TIMESTAMP),就能正確儲存(

mybatis存入資料庫後沒有分秒時間不全只有年月日

對於Mbatis操作Date/Time/DateTime,總結如下:將pojo的屬性型別設定為java.sql.Date(或java.sql.Time, java.sql.Timestamp),此時會嚴格遵循這三種類型的語義。但此方法因存在前文中提到的效能問題,在JDK1.

向資料庫中插入日期時間datetime型別資料,資料庫中只有日期沒有分秒

  java.util.Date是不能直接插入資料庫中的,雖然它包含了日期和時分秒。   java.sql.Date可以直接插入資料庫,但是它只有日期而沒有時間;   java.sql.Time可以直接插入資料庫,但是它只有時間,沒有日期 Java

使用Mybatis查詢,返回時間資料沒有分秒 解決方法

今天我在用mybatis查詢資料時,發現返回的時間資料只返回了日期  並沒有 ‘時’,‘分’,‘秒’。 後來我想到:Oralce的日期型別有很多種,Date ,Timestamp等,那是不是和我xml裡面配置的jdbcType型別有關, 1.檢查你的mysql資料表 &nbs

mysql中存入時間沒有分秒問題, 其中表時間欄位為datetime型別

            資料庫表的時間欄位time為時間datetime型別,在程式中,如果採用PreparedStatement 向語句傳的話,一般都會使用(int parameterIndex, Date x)方法,但是這樣,在資料庫表裡顯示的是:2014-09-20

Sql 獲取當前日期沒有分秒

2-2 時分秒 date body () convert get 8.0 OS select convert(varchar(10),getdate(),120) 輸出格式:2008-02-27 00:25:13 SELECT CONVERT(char(19), g

Oracle中獲取Date型別資料,沒有分秒

oralce資料庫中,獲取Date型別資料,發現數據的格式為:“yyyy-mm-dd”,而不是“yyyy-mm-dd hh24:mi:ss” 1,使用JDBC從oracle資料庫中取Date型別資料,當使用getDate(“欄位名”)方法取值時,只能獲取到日期,而無法獲

如何設定讓Oracle SQL Developer顯示的時間包含分秒

參考設定1: 將工具--首選項--資料庫--NLS--日期格式由DD-MON-RR修改為DD-MON-RR HH24:MI:SS 參考設定2: 將Tools --> Preferences --> Database --> NLS Parameters --> Date Fo

Python秒轉換成時間分秒

方法 一:seconds(秒數)為小數時不會丟失小數部分(推薦使用) import datetime datetime.timedelta(seconds=100.55) 方法一:seconds(秒數)為小數時會小數部分可能受影響 m, s = divmod(seconds = 11

後臺獲取的時間進行分秒倒計時

<html lang="en"> <head> <meta charset="UTF-8"> <title>js簡單時分秒倒計時</title> <!--<script src="js/dayClickI

hibernate保持日期沒有分秒的解決辦法

將hbm.xml中的 <property name="createTime" type="date" column="CJSJ" update="false"/> 改為 <property name="createTime" type="java.util

網頁顯示時間分秒轉化、倒計時原理

                                            <script type="text/javascript"> //倒計時原理 = 未來時間點-現在時間點 //var iNow = new Date();/

MyBatis 插入空值,需要指定JdbcType.如#{name,jdbcType=VARCHAR}

在執行SQL時MyBatis會自動通過物件中的屬性給SQL中引數賦值,它會自動將Java型別轉換成資料庫的型別。而一旦傳入的是null它就無法準確判斷這個型別應該是什麼,就有可能將型別轉換錯誤,從而報錯。要解決這個問題,需要針對這些可能為空的欄位,手動指定其轉換時用到的型別。

MyBatis 插入空值,需要指定JdbcType

看一看 org.apache.ibatis.type.BaseTypeHandler @Override public void setParameter(PreparedStatement ps, int i, T parameter, JdbcType

Oracle資料庫mybatis 插入空值的處理

mybatis 插入空值時報錯(with JdbcType OTHER)的兩種解決方案在使用Mybatis 3 時,發現了這個問題,當插入資料時,如果有一個欄位為空值時,系統會報異常,導致插入資料失敗。異常資訊類似:org.springframework.jdbc.Uncat

js如何獲得系統時間年月日分秒

targe onload 調用方法 space m3u baidu function www. pyw javascript 自帶有個對象(構造函數),Date().下面是代碼: 回答一: var now = new Date(); var nowTime = now.t