學習Mybatis 的時候遇到 Data truncation: Incorrect datetime value: '0' for column
找了一圈一直以為是插入時間的格式跟數據庫的格式不一致想了各種辦法解決時間格式的問題都解決不了。
通過log4j日志 仔細檢查發現其實通過java.util獲得的 new(Date)傳入的時間格式就是數據庫datetime所需要的時間戳(timetamp)格式 ,核心問題還是傳入數據庫的值不對並且始終為零。
通過博客 https://blog.csdn.net/mcloser/article/details/89679451 內容及底下的評論發現根本問題就是SQL格式寫錯了:
<insert id="addBlog" parameterType="com.timmy.pojo.Blog" > insert into mybatis.blog (id, title, author, create_time, views) VALUES (id=#{id},title=#{title},author=#{author},create_time=#{create_time},views=#{views}) </insert>
正確insert 語句格式:
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
所以正確代碼中values內不應該加 = 號,加了等號會成為邏輯判斷,導致插入的value為0 ,值為零其他類型如varchar和int可能不會報錯,但是datetime會報這個錯誤,
看到有一些人有問題說
插入數據成功了沒報錯但是值都是0,應該還是這個sql寫錯的問題。
正確代碼如下:
打好基礎,多寫sql,方是終極解決之道!