mybatis的启动入口一般有两个,在结合spring框架后由spring整合包下的SqlSessionFactoryBean启动
如果没有整合spring,则有XMLConfigBuilder启动
这两个启动入口都会初始化Configuration对象,该对象是mybatis配置文件的对象形式,我们实现的mybatis拦截器在此时被装载到configuration中
一、SqlSessionFactoryBean在类加载完成后调用后置方法,执行buildSqlSessionFactory();该方法中初始化配置类configuration,在配置类初始化完成后,调用SqlSessionFactoryBuilder类的builder方法
二、SqlSessionFactoryBuilder.builder()方法中new DefaultSqlSessionFactory对象,使用配置类作为入参
三、SqlSession对象;
在MyBatis框架中,SqlSession
对象是核心的数据库会话管理器,它提供了执行持久化操作的方法和管理持久化操作的生命周期。具体来说,SqlSession
对象的作用包括以下几个方面:
数据库会话管理: SqlSession
负责管理与数据库的连接,它是数据库操作的主要入口。在应用程序中,通过SqlSession
对象可以执行SQL语句,提交事务,关闭连接等操作。
SQL执行操作: SqlSession
提供了执行SQL语句的方法,可以执行查询(select)、更新(update)、插入(insert)、删除(delete)等数据库操作。
事务管理: 在MyBatis中,SqlSession
可以控制事务的生命周期。可以通过SqlSession
开启事务、提交事务或回滚事务,确保数据操作的一致性和完整性。
Mapper接口绑定: MyBatis通过SqlSession
为Mapper接口提供了实现类(代理类)。Mapper接口定义了数据库操作的方法,而SqlSession
通过加载Mapper接口和XML映射文件,将Mapper接口与实际的SQL语句绑定在一起,从而可以执行Mapper接口中定义的方法对数据库进行操作。
资源管理: SqlSession
在创建时会获取到数据库连接,在关闭时释放连接,确保资源得到合理的管理和释放,避免资源泄漏。
四、创建sqlsession对象,mybatis提供了从datasource和connection两种方式创建sqlsession的方法;这两个方式的区别在于是否需要手动管理数据库连接和事务;在获得事务工厂后,通过事务工厂和执行器Executor类型通过配置类的方法创建executor对象;
五、生成statementhandler;statementhandler对象在executor对象执行方法时被创建,statementhandler完成参数绑定等工作,并执行sql语句