zoukankan      html  css  js  c++  java
  • 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源码

  • 相关阅读:
    队列数据结构与算法JavaScript描述(5)
    栈数据结构与算法Javascript描述(4)
    散列数据结构与算法JavaScript描述(8)
    Evevt Loop、任务队列、定时器等
    OSGi初始篇
    应用服务平台与应用服务器
    数据源相关规范整理
    新手入门:教您最优的J2EE学习经验和流程
    TableView的使用
    Strategy
  • 原文地址:https://www.cnblogs.com/langtianya/p/2942938.html
Copyright © 2011-2022 走看看