日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mybatis由浅入深day01_5mybatis开发dao的方法(5.1SqlSession使用范围_5.2原始dao开发方法)...

發布時間:2023/12/6 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mybatis由浅入深day01_5mybatis开发dao的方法(5.1SqlSession使用范围_5.2原始dao开发方法)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

5?mybatis開發dao的方法

  5.1?SqlSession使用范圍

    5.1.1?SqlSessionFactoryBuilder

通過SqlSessionFactoryBuilder創建會話工廠SqlSessionFactory

SqlSessionFactoryBuilder當成一個工具類使用即可,不需要使用單例管理SqlSessionFactoryBuilder

在需要創建SqlSessionFactory時候,只需要new一次SqlSessionFactoryBuilder即可。

??

    5.1.2?SqlSessionFactory

通過SqlSessionFactory創建SqlSession,使用單例模式管理sqlSessionFactory(工廠一旦創建,使用一個實例)。

?

將來mybatis和spring整合后,使用單例模式管理sqlSessionFactory。

??

    5.1.3?SqlSession

SqlSession是一個面向用戶(程序員)的接口。

SqlSession中提供了很多操作數據庫的方法:如:selectOne(返回單個對象)、selectList(返回單個或多個對象)、。

?

SqlSession是線程不安全的,在SqlSesion實現類中除了有接口中的方法(操作數據庫的方法)還有數據域屬性。

struts中的action,接收參數需要在struts的類中通過成員變量定義來接收參數,如果用戶提交了username屬性,username就是一個數據域它放在成員變量里面就不可能用單例了,因為有可能多線程并發請求的話,每個線程共用了它們成員變量的值,這樣導致我們訪問沖突,所以說是不安全的,struts是多例管理的

?

SqlSession最佳應用場合在方法體內,定義成局部變量使用。

?

  5.2?原始dao開發方法(程序員需要寫dao接口和dao實現類)

    5.2.1?思路

程序員需要寫dao接口和dao實現類。

需要向dao實現類中注入SqlSessionFactory,在方法體內通過SqlSessionFactory創建SqlSession

?

    5.2.2?dao接口

??

    5.2.3?dao接口實現類

import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory;import cn.itcast.mybatis.po.User; /*** dao接口實現類* @author yejin*/ public class UserDaoImpl implements UserDao{//需要向dao實現類中注入SqlSessionFactory//這里通過構造方法注入private SqlSessionFactory sqlSessionFactory;public UserDaoImpl(SqlSessionFactory sqlSessionFactory) {this.sqlSessionFactory = sqlSessionFactory;} @Overridepublic User findUserById(int id) {SqlSession sqlSession = sqlSessionFactory.openSession();User user = sqlSession.selectOne("test.findUserById", id);//釋放資源 sqlSession.close();return user;}@Overridepublic void insertUser(User user) {SqlSession sqlSession = sqlSessionFactory.openSession();//執行插入操作sqlSession.insert("test.insertUser", user);//提交事務 sqlSession.commit();//釋放資源 sqlSession.close();}@Overridepublic void deleteUser(int id) {SqlSession sqlSession = sqlSessionFactory.openSession();//執行插入操作sqlSession.delete("test.deleteUser", id);//提交事務 sqlSession.commit();//釋放資源 sqlSession.close();} }

??

    5.2.4?測試代碼:

?

    5.2.5?總結原始 dao開發問題

1、dao接口實現類方法中存在大量模板方法,設想能否將這些代碼提取出來,大大減輕程序員的工作量。

?

2、調用sqlsession方法時將statement的id硬編碼了

?

3、調用sqlsession方法時傳入的變量,由于sqlsession方法使用泛型,即使變量類型傳入錯誤,在編譯階段也不報錯,不利于程序員開發。

轉載于:https://www.cnblogs.com/justdoitba/p/8040340.html

總結

以上是生活随笔為你收集整理的mybatis由浅入深day01_5mybatis开发dao的方法(5.1SqlSession使用范围_5.2原始dao开发方法)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。