1、mybatis的初始化

来源:互联网 发布:大学生网络党校 编辑:程序博客网 时间:2024/06/05 21:51

MyBatis的初始化做了什么

  • configuration 配置
    • properties 属性
    • settings 设置
    • typeAliases 类型命名
    • typeHandlers 类型处理器
    • objectFactory 对象工厂
    • plugins 插件
    • environments 环境
      • environment 环境变量
      • transactionManager 事务管理器
      • dataSource 数据源
  • 映射器

使用 org.apache.ibatis.session.Configuration 对象作为一个所有配置信息的容器,Configuration对象的组织结构和XML配置文件的组织结构几乎完全一样

可以这么说,MyBatis初始化的过程,就是创建 Configuration对象的过程。

MyBatis的初始化可以有两种方式:
1. 基于XML配置文件:基于XML配置文件的方式是将MyBatis的所有配置信息放在XML文件中,MyBatis通过加载并XML配置文件,将配置文信息组装成内部的Configuration对象
2.基于Java API:这种方式不使用XML配置文件,需要MyBatis使用者在Java代码中,手动创建Configuration对象,然后将配置参数set 进入Configuration对象中

MyBatis基于XML配置文件创建Configuration对象的过程

package com.lf;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;import java.io.InputStream;public class App {    public static void main(String[] args) throws IOException {        String resouce = "mybatis-config.xml";        InputStream is = Resources.getResourceAsStream(resouce);        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);        System.out.println(sqlSessionFactory.getConfiguration());    }}

mybatis初始化要经过简单的以下几步:
1. 调用SqlSessionFactoryBuilder对象的build(inputStream)方法;
2. SqlSessionFactoryBuilder会根据输入流inputStream等信息创建XMLConfigBuilder对象;
3. SqlSessionFactoryBuilder调用XMLConfigBuilder对象的parse()方法;
4. XMLConfigBuilder对象返回Configuration对象;
5. SqlSessionFactoryBuilder根据Configuration对象创建一个DefaultSessionFactory对象;
6. SqlSessionFactoryBuilder返回 DefaultSessionFactory对象给Client,供Client使用。

基于Java API

package com.lf;import org.apache.ibatis.session.Configuration;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.defaults.DefaultSqlSessionFactory;import java.io.IOException;public class App {    public static void main(String[] args) throws IOException {        Configuration configuration = new Configuration();        configuration.setAggressiveLazyLoading(true);        SqlSessionFactory sqlSessionFactory1 = new DefaultSqlSessionFactory(configuration);    }}
原创粉丝点击