java吧 关注:1,187,485贴子:12,592,777
  • 2回复贴,共1

【mybatis】从0开始到研读源码记录贴

只看楼主收藏回复

发个贴记录一下学习过程


IP属地:广东1楼2018-08-08 19:15回复
    有兴趣的一起来学习交流mybatis技术交流① 859031209


    IP属地:广东2楼2018-08-08 19:19
    回复
      首先从官方文档入手,明白mybatis使用场景是什么
      mybatis为ORM框架,主要解决关系映射问题,实际就是对JDBC操作的封装
      所以可以得知mybatis需要解决几个问题1、数据库连接;2、domain对象映射sql;3、sql语句构建;
      mybatis中主要的几个对象:
      mybatis是以SqlSessionFactory实例为中心
      关系:SqlSessionFactoryBuilder—>SqlSessionFactory—>SqlSession
      SqlSessionFactoryBuilder构建SqlSessionFactory
      SqlSessionFactoryBuilder可通过Configuration、XML等方式创建
      SqlSessionFactory获取SqlSession,SqlSession 完全包含了面向数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句
      SqlSessionFactoryBuilder
      构建类,用来构建SqlSessionFactory,构建完后就不需要存在了,最佳作用域是方法作用域(也就是局部方法变量),可通过Configuration、XML等方式创建SqlSessionFactory工厂类,用来创建SqlSession,所以需要在应用运行期内一直存在。最佳作用域是应用作用域。最好用单例或静态单例模式存在,只需要存在一个。所以这个类适合配置在spring中
      SqlSessionSqlSession
      完全包含了面向数据库执行 SQL 命令所需的所有方法,每执行一条SQL都会结合映射器(mapper)创建一个新的sqlsession。每个线程都应该有它自己的 SqlSession 实例。
      SqlSession
      的实例不是线程安全的,因此是不能被共享的,所以它的最佳的作用域是请求或方法作用域。每执行完就需要执行session.close()关闭
      Mappper
      映射器是一个你创建来绑定你映射的语句的接口。映射器接口的实例是从 SqlSession 中获得的。因此从技术层面讲,任何映射器实例的最大作用域是和请求它们的 SqlSession 相同的。


      IP属地:广东3楼2018-08-09 10:09
      回复