欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java的MyBatis+Spring框架中使用數(shù)據(jù)訪問對象DAO模式的方法

 更新時間:2016年06月01日 17:37:27   作者:fhd001  
Data Access Object數(shù)據(jù)訪問對象模式在Java操作數(shù)據(jù)庫部分的程序設計中經(jīng)常被使用到,這里我們就來看一下Java的MyBatis+Spring框架中使用數(shù)據(jù)訪問對象DAO模式的方法:

SqlSessionTemplate
SqlSessionTemplate是MyBatis-Spring的核心。這個類負責管理MyBatis的SqlSession,調(diào)用MyBatis的SQL方法,翻譯異常。SqlSessionTemplate是線程安全的,可以被多個DAO所共享使用。
當調(diào)用SQL方法時,包含從映射器getMapper()方法返回的方法,SqlSessionTemplate將會保證使用的SqlSession是和當前Spring的事務相關(guān)的。此外,它管理session的生命周期,包含必要的關(guān)閉,提交或回滾操作。
SqlSessionTemplate實現(xiàn)了SqlSession,這就是說要對MyBatis的SqlSession進行簡易替換。
SqlSessionTemplate通常是被用來替代默認的MyBatis實現(xiàn)的DefaultSqlSession,因為它不能參與到Spring的事務中也不能被注入,因為它是線程不安全的。相同應用程序中兩個類之間的轉(zhuǎn)換可能會引起數(shù)據(jù)一致性的問題。
SqlSessionTemplate對象可以使用SqlSessionFactory作為構(gòu)造方法的參數(shù)來創(chuàng)建。

<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> 
  <constructor-arg index="0" ref="sqlSessionFactory"/> 
</bean> 

這個bean現(xiàn)在可以直接注入到DAO bean中。你需要在bean中添加一個SqlSession屬性,就像下面的代碼:

public class UserDaoImpl implements UserDao{ 
  private SqlSession sqlSession; 
  public void setSqlSession(SqlSession sqlSession){ 
    this.sqlSession = sqlSession; 
  } 
  public User getuser(String userId){ 
    return (User)sqlSession.selectOne 
    ("org.mybatis.spring.sample.mapper.UserMapper.getUser",userId); 
  } 
} 

如下注入SqlSessionTemplate:

<bean id="userDao" class="org.mybatis.spring.sample.dao.UserDaoImpl"> 
  <property name="sqlSession" ref="sqlSession"/> 
</bean> 

SqlSessionDaoSupport
SqlSessionDaoSupport是一個抽象的支持類,用來為你提供SqlSession。調(diào)用getSqlSession()方法你會得到一個SqlSessionTemplate,這然后可以用于執(zhí)行SQL方法,就像下面這樣:

public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao{ 
  public User getUser(String userId){ 
    return (User)getSqlSession().selectOne 
      ("org.mybatis.spring.sample.mapper.UserMapper.getUser",userId); 
  } 
} 

通常MapperFactoryBean是這個類的首選,因為它不需要額外的代碼。但是,如果你需要在DAO中做其它非MyBatis的工作或需要具體的類,那么這個類就是很有用了。SqlSessionDaoSupport需要一個sqlSessionFactory或sqlSessionTemplate屬性來設置。這些被明確地設置或由Spring來自動裝配。如果兩者都被設置了,那么sqlSessionFactory是被忽略的。
假設類UserMapperImpl是SqlSessionDaoSupport的子類,它可以在Spring中進行如下的配置:

<bean id="userMapper" class="org.mybatis.spring.sample.mapper.UserMapperImpl"> 
  <property name="sqlSessionFactory" ref="sqlSessionFactory"/> 
</bean> 

 

相關(guān)文章

  • mybatis plus in方法使用詳解

    mybatis plus in方法使用詳解

    這篇文章主要介紹了mybatis plus in方法使用詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • 4個Java8中你需要知道的函數(shù)式接口分享

    4個Java8中你需要知道的函數(shù)式接口分享

    Java?8?中提供了許多函數(shù)式接口,包括Function、Consumer、Supplier、Predicate?等等。本文主要來和大家介紹一下它們的具體使用,需要的可以參考一下
    2023-04-04
  • Spring中RedisTemplate使用方法詳解

    Spring中RedisTemplate使用方法詳解

    Spring封裝了一個比較強大的模板,也就是redisTemplate,方便在開發(fā)的時候操作Redis緩存,這篇文章主要給大家介紹了關(guān)于Java中RedisTemplate使用方法的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • IDEA更改Terminal的方法步驟

    IDEA更改Terminal的方法步驟

    Windows上開發(fā)有時候cmd不支持bash命令,有些操作就會非常麻煩,本文主要介紹了IDEA更改Terminal的方法步驟,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • Intellij IDEA導入eclipse web項目的操作步驟詳解

    Intellij IDEA導入eclipse web項目的操作步驟詳解

    Eclipse當中的web項目都會有這兩個文件,但是idea當中應該是沒有的,所以導入會出現(xiàn)兼容問題,但是本篇文章會教大家如何導入,并且導入過后還能使用tomcat運行,需要的朋友可以參考下
    2023-08-08
  • SpringBoot整合Elasticsearch游標查詢的示例代碼(scroll)

    SpringBoot整合Elasticsearch游標查詢的示例代碼(scroll)

    這篇文章主要介紹了SpringBoot整合Elasticsearch游標查詢(scroll),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • spring循環(huán)注入異常問題的解決方案

    spring循環(huán)注入異常問題的解決方案

    今天小編就為大家分享一篇關(guān)于spring循環(huán)注入異常問題的解決方案,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Java中的JVM虛擬機內(nèi)存分配詳解

    Java中的JVM虛擬機內(nèi)存分配詳解

    這篇文章主要介紹了Java中的JVM虛擬機內(nèi)存分配詳解,虛擬機是一種能夠執(zhí)行 Java 字節(jié)碼的虛擬機,它是 Java 語言的核心組成部分,負責將 Java 代碼轉(zhuǎn)換為機器碼并執(zhí)行,JVM 提供了內(nèi)存管理、垃圾回收、線程管理等功能,需要的朋友可以參考下
    2023-10-10
  • spring?boot?Mybatis?攔截器實現(xiàn)拼接sql和修改的代碼詳解

    spring?boot?Mybatis?攔截器實現(xiàn)拼接sql和修改的代碼詳解

    這篇文章主要介紹了spring?boot?Mybatis?攔截器實現(xiàn)拼接sql和修改,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • 詳解如何把Java中if-else代碼重構(gòu)成高質(zhì)量代碼

    詳解如何把Java中if-else代碼重構(gòu)成高質(zhì)量代碼

    這篇文章主要介紹了詳解如何把Java中if-else代碼重構(gòu)成高質(zhì)量代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11

最新評論