• 10.30Mybatis三要素


    10.30Mybatis三要素

    Mybatis的三个基本要素

    • 核心接口和类

    • Mybatis核心配置文件(mybatis-config.xml)

    • SQL映射文件(mapper.xml)


    核心接口和类

    • SqlSessionFactory接口

      • SqlSessionFactoryBuilder实现类实现了SqlSessionFactory接口,提供了Build方法来返回一个SqlSessionFactory接口对象

      • SqlSessionFactory接口下定义了一些方法,这些方法返回SqlSession接口的对象

    • SqlSession接口

      • 接收SqlSessionFactoryBuild对象调用的方法返回的对象

    SqlSessionFactorySqlSessionSqlSessionFactoryBuild三者关系图:

     

    特点:

    • 每个Mybatis程序都以一个SqlSessionFactory对象的实例为核心

    • 获取SqlSessionFactoryBuilder对象--->根据XML或者Configuration类的实例构建该对象

    • 获取SqlSessionFatory对象--->通过SqlSessionFactoryBuilder对象来获取

    • SqlSessionFactory对象获取SqlSession实例--->SqlSession对象完全包含以数据库为背景的所有执行 SQL 操作的方法,用该实例可以直接执行已映射的 SQL 语句

    SqlSessionFactoryBuilder类下的build方法:

    由于参数 environment 和 properties 都可以为 null,去除重复的方法,真正的重载方法其实只有如下三种:

    • build(InputStream inputStream, String environment, Properties properties)

    • build(Reader reader, String environment, Properties properties)

    • build(Configuration config)

    由上述可知该方法的形参为三类:

    • InputStream(字节流)

    • Reader(字符流)

    • Configuration(类)

    字节流和字符流都是读取配置文件的方式。一般习惯为采取 XML 配置文件的方式来构造 SqlSessionFactory。

    优点:

    • 避免硬编码

    • 方便后续人员维护,避免重复编码

    SqlSessionFactoryBuilder的生命周期和作用域

    最佳范围就是存在于方法体内,作为局部变量。--->SqlSessionFactoryBuilder 特点就是用过即丢。

    SqlSessionFactory

    概念及作用:

    SqlSessionFactory 是工厂接口不是现实类,他的作用是创建 SqlSession。

    SqlSessionFactory的生命周期和作用域

    最佳范围是Application,作为全局变量。--->SqlSessionFactory 对象一旦创建,就会在整个应用程序过程中始终存在。无需再去销毁或再创建它,并且在应用程序运行中也不建议多次创建 SqlSessionFactory。

    “存在于整个应用运行期间,并且只存在一个对象实例”的模式就是所谓的单例模式(指在运行期间有且仅有一个实例)。

    SqlSession

    作用:

    用于执行持久化操作的对象,类似于 JDBC 中的 Connection。它提供了面向数据库执行 SQL 命令所需的所有方法,可以通过 SqlSession 实例直接运行已映射的 SQL 语句。

    主要用途:

    • 获取映射器。让映射器通过命名空间和方法名称找到对应的SQL,发送给数据库,执行后返回结果

    • 直接通过"命名空间(namespace) + SQL id"的方式执行SQL,不需要获取映射器。如上一篇例子

    SqlSession的生命周期和作用域

    SqlSession 对应一次数据库会话,每次访问数据库时都需要创建 SqlSession 对象。

    每个线程都有自己的 SqlSession 实例,SqlSession 实例不能被共享,也不是线程安全的。 SqlSession 的作用域范围是 request 作用域或方法体作用域内。

     

    It's a lonely road!!!
  • 相关阅读:
    【WPF学习】第四十八章 理解WPF动画
    【WPF学习】第四十七章 WriteableBitmap类
    【WPF学习】第四十六章 效果
    【WPF学习】第四十五章 可视化对象
    【WPF学习】第四十四章 图画
    【WPF学习】第四十三章 路径和几何图形
    【WPF学习】第四十二章 透明
    【WPF学习】第四十一章 变换
    【WPF学习】第四十章 画刷
    【WPF学习】第三十九章 理解形状
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/15514856.html
Copyright © 2020-2023  润新知