1.sqlsession使用範圍
1.1 sqlsessionfactorybuilder
通過sqlsessionfactorybuilder建立會話工廠sqlsessionfactory
將sqlsessionfactorybuilder當成乙個工具類使用即可,不需要使用單例管理sqlsessionfactorybuilder。
在需要建立sqlsessionfactory時候,只需要new一次sqlsessionfactorybuilder即可。
1.2sqlsessionfactory
通過sqlsessionfactory建立sqlsession,使用單例模式管理sqlsessionfactory(工廠一旦建立,使用乙個例項)。
當mybatis和spring整合後,使用單例模式管理sqlsessionfactory
1.3sqlsession
sqlsession是乙個面向使用者(程式設計師)的介面
sqlsession中提供了很多運算元據庫的方法:如:seleteone(返回單個物件)、selectlist(返回單個或多個物件)。
sqlsession是執行緒不安全的,在sqlsession實現類中除了有介面中的方法(運算元據庫的方法)還有資料域屬性。
sqlsession最佳應用場合在方法體內,定義區域性變數使用。
2.原始dao開發方法(程式設計師需要寫dao介面和dao實現類)
2.1思路
程式設計師需要寫dao介面和dao實現類。
需要向dao實現類中注入sqlsessionfactory,在方法體內通過sqlsessionfactory建立sqlsession。
2.2dao介面
例:public inte***ce userdao
2.3dao介面實現類
例:public class userdaoimpl implements userdao
@override
public user finduserbyid(int id) throws exception
@override
public void insertuser(user user) throws exception
@override
public void deleteuser(int id) throws exception
}2.4 原始dao開發問題總結
(1)dao介面實現類方法中存在大量模板**,設想能否將這些**提取出來,大大減輕程式設計師工作量。
(2)呼叫sqlsession方法時將statement的id硬編碼了。
(3)呼叫sqlsession方法時傳入的變數,由於sqlsession方法使用泛型,即使變數型別傳入錯誤,在編譯階段也不報錯,不利於程式設計師開發。
3.1 思路
開發規範:
例:select * from user where id=#
public user finduserbyid(int id) throws exception;
總結:以上開發規範主要是對下邊的**進行統一生成:
user user =sqlsession.seleteone("test.finduserbyid",id);
sqlsession.insert("test.insertuser",user);
等public user finduserbyid(int id) throws exception;
selete * from user where id=#
3.5測試
3.6問題總結
(1)**物件內部呼叫seleteone或seletelist
注意:持久層方法的引數可以包裝型別,service方法中建議不要使用包裝型別(不利於業務層的可擴充套件性)。
mybatis開發dao的方法
mybatis開發dao的方法 1 sqlsession的使用範圍 1 1 sqlsessionfactorybuilder 只當成乙個工具類即可,不需要使用單例模式管理 通過sqlsessionfactorybuilder建立sqlsessionfactory,1 2 sqlsessionfact...
使用mybatis開發dao方法
使用mybatis開發dao的時候,主要涉及到sqlsessionfactorybuilder sqlsessionfactory sqlsession 這三個類 現在將這三個類的使用方法簡單的說下 使用mybatis開發dao方法 sqlsessionfactorybuilder 把它當成乙個工具...
mybatis實現dao層開發
mybatis支援自己寫dao實現類 介面中的方法如下 配置檔案中如下 dao實現類如下 注意這裡selectlist傳入的是我們之前自定義分析中的key namespace id 這樣也可以得到我們的查詢結果,但是這裡我們需要注意,這個和我們之前的查詢方法是兩個思路,之前的方式使用的是 物件的方法...