mybatis之sqlSession無需開發人員close


根據mybatis官方文檔,建議對sqlSession進行如下操作

 

SqlSession session = sqlSessionFactory.openSession(); try { // following 3 lines pseudocod for "doing some work" session.insert(...); session.update(...); session.delete(...); session.commit(); } finally { session.close(); }

每個操作都進行打開和關閉,而且都是重復性操作。

 

於是mybatis-3.0.6采用動態代理實現的aop非常好的解決了上面的問題。

大體實現方式如下:

1.在applicationContext.xml中配置

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
        <property name="configLocation"> 
            <value>classpath:mybatisConfig.xml</value> 
        </property> 
        <property name="dataSource"> 
            <ref bean="dataSource" /> 
        </property> 
    </bean> 

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

2.在具體的使用類中執行如下操作,即可。

int identifier = sqlSession.insert(statement, object);

大體原理:

執行sqlSession.insert及執行SqlSessionTemplate.insert,其內部調用sqlSessionProxy.insert,sqlSessionProxy是一個動態代理器,其調用處理器是SqlSessionInterceptor,該處理器先getSqlSession,然后執行insert,最后closeSqlSession。

不明白的同學可直接查看mybatis-3.0.6源碼

 

原文地址:http://www.tuicool.com/articles/em2iEv


免責聲明!

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



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