SqlSession(SqlSessionTemplate類) 實現Mybatis


yBatis3與spring整合之使用SqlSession(SqlSessionDaoTemplate類)

----------

 

注:這是手工編寫實現的方式(其實可以直接使用注入映射器的)

 

SqlSessionTemplate

SqlSessionTemplate是MyBatis-Spring的核心。這個類負責管理MyBatis的SqlSession,調用MyBatis的SQL方法,翻譯異常。SqlSessionTemplate是線程安全的,可以被多個DAO所共享使用。

當調用SQL方法時,包含從映射器getMapper()方法返回的方法,SqlSessionTemplate將會保證使用的SqlSession是和當前Spring的事務相關的。此外,它管理session的生命周期,包含必要的關閉,提交或回滾操作。

SqlSessionTemplate實現了SqlSession,這就是說要對MyBatis的SqlSession進行簡易替換。

SqlSessionTemplate通常是被用來替代默認的MyBatis實現的DefaultSqlSession,因為它不能參與到Spring的事務中也不能被注入,因為它是線程不安全的。相同應用程序中兩個類之間的轉換可能會引起數據一致性的問題。

SqlSessionTemplate對象可以使用SqlSessionFactory作為構造方法的參數來創建。

Xml代碼   收藏代碼
  1. <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">  
  2.     <constructor-arg index="0" ref="sqlSessionFactory"/>  
  3. </bean>  

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

Java代碼   收藏代碼
  1. public class UserDaoImpl implements UserDao{  
  2.     private SqlSession sqlSession;  
  3.     public void setSqlSession(SqlSession sqlSession){  
  4.         this.sqlSession = sqlSession;  
  5.     }  
  6.     public User getuser(String userId){  
  7.         return (User)sqlSession.selectOne  
  8.         ("org.mybatis.spring.sample.mapper.UserMapper.getUser",userId);  
  9.     }  
  10. }  

如下注入SqlSessionTemplate:

Xml代碼   收藏代碼
  1. <bean id="userDao" class="org.mybatis.spring.sample.dao.UserDaoImpl">  
  2.     <property name="sqlSession" ref="sqlSession"/>  
  3. </bean>  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM