基于javaMybatis存進(jìn)時(shí)間戳的問(wèn)題
封裝了一個(gè)實(shí)體類(lèi),里面有個(gè)字段 Integer createTime。
要利用這個(gè)實(shí)體類(lèi)將一個(gè)時(shí)間戳存進(jìn)數(shù)據(jù)庫(kù)中。
剛開(kāi)始的時(shí)候出現(xiàn)錯(cuò)誤:
Data truncation: Incorrect datetime value: ’123456789’ for column ’create_time’ at row 1
是存進(jìn)數(shù)據(jù)庫(kù)的時(shí)候出現(xiàn)了問(wèn)題,個(gè)人理解應(yīng)該是Integer類(lèi)型和數(shù)據(jù)庫(kù)中的Timestamp類(lèi)型不匹配。
之后把封裝類(lèi)里createTime的類(lèi)型變成了Timestamp,但是由于我是用Map<String, Object>傳過(guò)來(lái)的參數(shù),取出來(lái)的值是Object類(lèi)型,轉(zhuǎn)換成Timestamp一直出錯(cuò)(可能是我知道的方法不夠),于是我又把createTime的封裝類(lèi)變成了Date類(lèi)型。代碼大概如下
Long createTime = Long.parseLong(param.get('CreateTime').toString()); //先用Long接收傳過(guò)來(lái)的參數(shù)Member member = new Member(); //實(shí)例化一個(gè)實(shí)體類(lèi)member.setCreateTime(new Date(createTime)); //因?yàn)榉庋b類(lèi)里createTime是Date類(lèi)型,直接new一個(gè)日期,只要把Long類(lèi)型的數(shù)值放進(jìn)去就可以
這樣,將member用Mybatis插入數(shù)據(jù)庫(kù)就不會(huì)出現(xiàn)問(wèn)題了。
Mybatis處理相關(guān)時(shí)間戳格式的數(shù)據(jù)1、程序中直接寫(xiě)SQL語(yǔ)句時(shí):
1)如果插入的是當(dāng)前時(shí)間戳,可以在SQL中直接寫(xiě)SYSTIMESTAMP關(guān)鍵字。
2)如果插入的是前臺(tái)送上來(lái)的時(shí)間,可以在SQL中使用Oracle的函數(shù)進(jìn)行轉(zhuǎn)換to_date或to_timestamp,
to_timestamp(string, fmt)
fmt可以為空,為空時(shí),string必須符合NLS_TIMESTAMP_FORMAT格式,即 ’YYYY-MM-DD HH:MI:SS.FF’
to_date只保存到日期,to_timestamp可以保存到時(shí)分秒
2、通過(guò)Mybatis進(jìn)行映射時(shí)
如果Entity中定義的類(lèi)型為T(mén)imestamp, resultMap中定義的javaType=“java.sql.Timestamp”, SQL語(yǔ)句中定義的jdbcType=TIMESTAMP
如果Entity中定義的類(lèi)型為String,resultMap中定義的javaType='java.lang.String',SQL語(yǔ)句中需要對(duì)參數(shù)進(jìn)行to_timestamp轉(zhuǎn)換,jdbcType=TIMESTAMP
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. android 控件同時(shí)監(jiān)聽(tīng)單擊和雙擊實(shí)例2. 解決vue頁(yè)面刷新,數(shù)據(jù)丟失的問(wèn)題3. Python 忽略文件名編碼的方法4. vue路由分文件拆分管理詳解5. 詳解android adb常見(jiàn)用法6. vue+vuex+axios從后臺(tái)獲取數(shù)據(jù)存入vuex,組件之間共享數(shù)據(jù)操作7. python logging.info在終端沒(méi)輸出的解決8. android studio實(shí)現(xiàn)簡(jiǎn)單的計(jì)算器(無(wú)bug)9. python Selenium 庫(kù)的使用技巧10. python 讀txt文件,按‘,’分割每行數(shù)據(jù)操作
