美文网首页
java动态代理---MyBatis之SqlSessionDao

java动态代理---MyBatis之SqlSessionDao

作者: 江波_fb95 | 来源:发表于2017-06-20 21:45 被阅读0次

    在使用mybatis时我们一般通过继承SqlSessionDaoSupport然后使用getSqlSession获取数据库连接,进行数据库相关操作。我们查看getSqlSession方法可以看出,这个方法其实是返回了一个SqlSessionTemplate对象。

    接着我们进入SqlSessionTemplate的构造器中看看,最终发现最终调用的都是如下构造器。

    根据代码我们可以看到,最终生成的是一个sqlSession的动态代理sqlSessionProxy。根据动态代理构造我们可以很容易的看出,最终数据库相关操作都封装在SqlSessionInterceptor的invoke方法中。我们进invoke方法中看看。

    在invoke方法中我们可以看到,改代理类并无对原有方法做过多包装。只是封装了相关事物操作。具体执行顺序如下:

    1. 获取数据库链接,处理相关sql操作

    2. 如果数据库操作有相应事物,则提交事物

    3. 若2发生异常则回滚数据库操作,并关闭连接

    4. 第四步一定执行,如果数据库链接没有关闭,则关闭数据库链接

    相关文章

      网友评论

          本文标题:java动态代理---MyBatis之SqlSessionDao

          本文链接:https://www.haomeiwen.com/subject/uevaqxtx.html