zoukankan      html  css  js  c++  java
  • 构建SqlSessionFactory 的过程

    1 SqlSessionFactory 的核心功能是创建 SqlSession 接口,而 SqlSessionFactory 是通过 SqlSessionFactoryBuilder 去构建。

    构建步骤1)XMLConfigBuilder 解析配置的XML文件,读出配置参数,然后将配置数据存放到 Configuration 类中。Mybatis 几乎所有的配置都在 Configuration  类中。

    2)使用 Configuration  去创建 SqlSessionFactory ,Mybatis 的 SqlSessionFactory 是一个接口,而不是实现类。mybatis 提供了默认的 SqlSessionFactory  实现类,org.apache.ibatis.session.defaults.DefaultSqlSessionFactory。因此大多数情况下我们不需要自己去创建 SqlSessionFactory  的实现类。

    2 构建 Configuration 它的作用如下

    • 读入配置文件,包括基础配置的XML 文件和映射器的XML 文件
    • 初始化基础配置和重要的类对象,比如Mybatis 别名、映射器、ObjectFactory 和 typeHandler 对象等
    • 提工单例,为后续创建 SessionFactory 服务并提供配置参数。
    • 执行一些对象方法,初始化一些配置信息

    Configuration 对象是单例的,是通过 XMLConfigBuilder 去构建的。

    3 映射器的内部组成,是由3部分组成的

    • MappedStatement,他保存映射器的节点(select | insert | delete | update),和SQL 语句、缓存、resultMap、parameterType、resultType
    • SqlSource,它是提供 BoundSql 对象的地方,他是 MappedStatement 的一个属性
    • BoundSql,他是建立 SQL 和参数的地方。3个常用属性:SQL、parameterObject、parameterMappings

    对于参数和SQL主要适用对象是 BoundSql 对象。

    • parameterObject 是参数本身,我们可以传递POJO、Map、简单对象、@Param等
    • 传递简单对象(int/String/float/double),mybatis会将其转换成为包装对象。比如我们传递一个 int 他会把参数转换成 Integer 对象
    • 如果传递的是 POJO 或者 Map 那么 parameterObject  就是你传入的 POJO 或者 Map不变。
    • 传递多个参数,没有使用 @Param 那么 mybatis会把 parameterObject  变为一个 Map<String, Object> 对象,其键值的关系是按照顺序来的,类似于{"1":p1,"2":p2...,"param1":p1,"param2":p2...},所以在编写SQL的时候可以使用#{param1} 或 #{1} 去引用参数
    • 传递多个参数,并使用 @Param 注解, mybatis会把 parameterObject  变为一个 Map<String, Object> 对象,只是把键值换成了 @Param 注解的值。比如,@Param("key1") String p1, @Param("key2") String p2,那么这个 parameterObject  对象就是{"key1":p1,"key2":p2}

    4 构建 SqlSessionFactory,有Configuration 对象,构建 SqlSessionFactory 就很方便。

    sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputstream)
  • 相关阅读:
    初识 Mysql
    Python之协程
    crm 动态一级二级菜单
    admin 后台操作表格
    crm 权限设计
    crm 公户变私户的问题 班级管理 课程管理 学习记录初始化
    crm 添加用户 编辑用户 公户和私户的展示,公户和私户的转化
    crm 数据展示 和分页思想(一)
    python django(forms组件)
    python Django 中间件介绍
  • 原文地址:https://www.cnblogs.com/zhaopengcheng/p/7149708.html
Copyright © 2011-2022 走看看