一、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