開發中遇到mybatis生成的example通過呼叫createcriteria()來建立criteria並設定查詢條件的情況。
但是需要換乙個查詢條件再次查詢時發現再次呼叫該方法「無效果"。
看到大多數的做法是通過new乙個新的example來查詢,考慮到可能不是最好的或者最合理的做法,對此進行了簡單研究。
發現問題原因如下,我們看下生成的exmaple的原始碼:
public criteria createcriteria()
return criteria;
}protected criteria createcriteriainternal()
發現呼叫createcriteria(),雖然每次建立乙個新的criteria物件但是只有
protected listoredcriteria
這個列表長度為0時才會新增,進去。
檢視對映的xml檔案時發現,查詢條件正是取自於oredcriteria。
只有呼叫or時才新增到該集合中
public void or(criteria criteria)
那麼我們想重置查詢條件怎麼辦?
兩種方法:
一種是只清空example的oredcriteria屬性。
那麼可以通過example類中的getoredcriteria() 函式獲取該列表後通過clear方法清空。
public listgetoredcriteria()
另外一種更徹底的方法,直接呼叫example的clear() 方法,將exmple物件「重置」為初始狀態。
public void clear()
得出乙個結論:遇到問題,多看原始碼,多看官方文件。 重置mysql 密碼 mysql重置密碼
ubuntu下重置mysql的root密碼 sudo vi etc mysql my.cnf,在 mysqld 段中加入一行 skip grant tables sudo service mysql restart,重啟mysql服務 sudo mysql u root p mysql,用空密碼進入...
mysql id重置密碼 mysql 重置密碼
mysql 重置密碼 版本5.7之前 1 修改mysql配置檔案 vi etc my.cnf 注 windows下修改的是my.ini 在 mysqld 後面任意一行新增 skip grant tables 用來跳過密碼驗證的過程。重啟mysql 2 進入mysql root localhost m...
mysql 重置密碼 mysql 重置密碼
mysql 重置密碼 版本5.7之前 1 修改mysql配置檔案 vi etc my.cnf 注 windows下修改的是my.ini 在 mysqld 後面任意一行新增 skip grant tables 用來跳過密碼驗證的過程。重啟mysql 2 進入mysql root localhost m...