Linux+MySQL+IDEA+DDD+MVC+Spring+Ibatis+Paoding-rose+Velocity+Maven+Git問題記錄

一、Ibatis

(1)Ibatis的一個特性:命名優於配置

(2)c3p0連接池的一個問題:0000-00-00 00:00:00不能賦值

異常名:Cannot convert value '0000-00-00 00:00:00' from column 1 to TIMESTAMP

解決:jdbc.url=jdbc:mysql://10.248.31.54:3306/asset?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8

在url後面加一句話:zeroDateTimeBehavior=convertToNull(紅體部分)

原因:

java.util.Date,使其值爲 '0000-00-00'是不可能的,最古老的日期應該是'0001-01-01 00:00:00'。MySQL通過jdbc轉換時,就會遇到這個情況。

(3)Ibatis配置文件書寫格式問題

1、 多表連接查詢中的通配符

  <isNotEmpty property="category" prepend=" and ">
                t.category like '%$category$%'
     </isNotEmpty>

2、關係屬性

  <result column="{id=template_id,status=status}" property="template" select="TTemplate.queryByMap" />

在queryByMap中不需要再寫關係屬性對應的數據庫字段名,就是說標籤中的sql語句可以不出現連接表的字段。

(4)CRUD

1、沒有發現屬性名

原因:注意column中的字段名一定要在sql語句中出現的,即網上常說的Resultset。

我遇到的問題是:在插入之後,ibatis會默認根據主鍵(selectPk)查詢放到緩存裏,所以我的執行過程有兩個insert,select,結果集也有兩個所以在寫的時候,sql語句兩個都要寫完整。

(5)git

1、執行過程:

add-commit-push

作用分別是 add-添加索引 、commit-提交到本地庫、push提交到遠程庫 提交時注意依賴關係和刪除數據庫主外鍵關係是一個道理

2、ssh -keygen -t rsa -C "emailname"

(6)判斷爲空的寫法

按照大家的規則走(不是絕對的,常出現的地方記住就行了)

1、時間爲空:    tasset.setBorrowTime(model.getBorrowTime() == null?new Date():model.getBorrowTime());三位運算符

2、對象爲空: null!=dataObjects

原因:

不管是null!=object還是object!=null,在比較的時候都會讀取一次object的值。
把null寫左邊其實可以防止編程出現的低級錯誤,你用不等於(!=)不好說明,改用等於。

if(object == null)這個語句有時候沒注意就會寫成:if(object = null)//少了個等號
這樣在有的語言中編譯是不會出錯的,而在運行中結果就不知道了。。

但是你把null寫在左邊,null其實相當於一個常量,你對常量賦值編譯的時候就會報錯,這樣就能防止這種錯誤的發生了:
if(a == 5) //這是比較
if(a = 5) //能執行,不過C#裏有檢測這種錯誤
if(5 = a) //編譯就報錯
(7)mysql命令
show processlist
show create table tablename
use databasename
show datatables
show  tables
flush privileges
insert into mysql.user(host,user,password) values ("localhost","username","password")
grant all privileges on "".* to username@localhost



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章