Mybatis的SqlSessionFactory构造过程

创建SqlSession的关键是先创建SqlSessionFactory,创建SqlSessionFactory需要提供配置文件和相关的参数,然后可以使用SqlSessionFactoryBuilder去创建SqlSessionFactory,提供Configuration对象作为SqlSessionFactory构造函数入参。步骤如下:

    public SqlSessionFactory build(Configuration config) {
        return new DefaultSqlSessionFactory(config);
    }
  1. 通过XMLConfigBuilder去解析配置的XML文件,读出配置参数,并将读出的数据存入Configuration类中,Mybatis几乎所有的配置都是存在这里。
  2. 使用Configuration对象去创建SqlSessionFactory,这只是一个接口,有默认的实现类DefaultSqlSessionFactory

Mybatis是一个复杂的系统,其初始化过程非常复杂,因此把所有初始化参数包装成一个对象,方便管理参数,同时具有内聚性

映射器的内部组成
一个映射器是由3个部分组成:

  • MappedStatement,它保存着映射器的一个节点(select|insert|delete|update)。包括许多配置的SQL,SQL的id,缓存信息、resultMap、parameterType等配置信息
  • SqlSource,是提供BoundSql对象的地方,是MappedStatement的一个属性,
  • BoundSql,建立SQL和参数的地方。有三个常用属性:SQL,parameterObject、parameterMappings

在这里插入图片描述

parameterObject为参数本身,有三种参数:基本数据类型,POJO,Map或者@param注解的参数

  • 基本数据类型,Mybatis会把参数变为Integer对象传递,
  • POJO和Map,那么parameterObject就是传入的POJO和Map
  • 多个参数,Mybatis会把parameterObject变为一个Map<String,Object>对象,其中参数被当做Map的value,而key根据是否有@Param注解来分为两种,如果没有@Param注解,那么key为“1”、“2”…,如果有@Param注解,则key为注解中的字符串

parameterMappings:是一个list,保存着parameterMapping,这个对象会描述我们的参数,包括属性、名称、表达式、jdbcTypeName、jdbcType、javaType、typeHandler等,一般不去修改它,通过它可以实现Sql和参数的结合,以便PreparedStatement能够通过它找到parameterObject对象的属性并设置参数

sql属性就是我们书写在映射器里的一条sql,大多数情况下无需修改它。

SqlSession运行过程
SqlSession是一个接口,通过构造SqlSessionFactory就可以轻易拿到SqlSession,SqlSession接口有许多常用的CRUD方法,调用这些方法可以执行相应的CRUD SQL语句,

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值