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源码

  • 相关阅读:
    git注册和基本命令
    thinkphp概述2
    thinkphp概述
    PHP基础知识总结
    phpmyadmin教程
    开发环境wamp3.06 + Zend studio 12 调试配置
    PHP标记风格,编码规范
    PHP开发工具 zend studio
    php与ajax技术
    可变参模板template
  • 原文地址:https://www.cnblogs.com/langtianya/p/2942938.html
Copyright © 2011-2022 走看看