MyBatis总结之二

1.MyBtis基本构造

(1)SqlSessionFactoryBuilder(构造器):根据配置信息或者代码生成SqlSessionFactory (工厂接口);

(2)SqlSessionFactory:依靠工厂生成SqlSession(会话);

(3)SqlSession:是一个既可以发送SQL去执行并返回结果,也可以获取Mapper的接口;

(4)SQL Mapper:由一个Java接口和XML文件(或注解)构成的组件,需要给出对应的SQL和映射规则,负责去执行SQL,并返回结果。

2.原理


(1)Resources通过加载myBatis-config.xml获取输入流;

(2)SqlSessionFactoryBuilder从输入流读取配置信息,创建session工厂SqlSessionFactory;

(3)SqlSessionFactory创建SqlSession,open session;

(4) SqlSession操作映射器Mapper组件,由映射器去执行SQL,并返回结果;(SqlSession获取映射器,让映射器通过命名空间和方法名找到对应的SQL,发送给数据库,执行后并返回结果)

(5)SqlSession获取结果后,关闭session;

4.生命周期

(1)SqlSessionFactoryBuilder  :利用xml或java代码获取资源构建sqlSessionFactory,一旦构建,其作用就完结了,失去存在意义,生命周期只存在于方法局部。

(2)SqlSessionFactory :创建sqlSession    ,sqlSession就是一个会话,每次应用程序需要访问数据库,都需要通过SqlSessionFactory创建会话,所以其应该Mybaits整个生命周期。

       SqlSessionFactory 的创建应该采用单例模式,因为创建多次同一个数据库的SqlSessionFactory,则每次都会打开一个数据库连接(Connection),连接资源会被占用,数据库资源会被占用。

(3)SqlSession :相当于JDBC连接对象,生命周期应该在请求数据库处理事务的过程中,应该及时关闭sqlsession,避免造成数据库连接池的资源浪费,影响系统性能。

(4)Mapper :一个接口,没有实现类,其作用就是发送SQL,返回结果,或者执行SQL修改数据库数据,是一个SQLsession事务内的存在,一个方法级别相当于JDBC中的一条SQL语句的执行,其生命周期的最大范围是和SqlSession相同的。

3.实例


(1)log4j.properties

主要负责打印MyBtais运行轨迹,便于调试代码。

(2)Chapter2Main.java

程序入口

(3)RoleMapper.java

映射器


(4)RoleMapper.xml


Mapper组件即映射器组件由RoleMapper.java和RoleMapper.xml构成,负责放松SQL,并返回结果:

RoleMapper.java是一个接口,定义了需要访问数据的方法,不需要具体的实现类;

RoleMapper.xml定义了具体的SQL,SQL语句的id对应RoleMapper.java接口的方法名,parameterType对应方法参数,resultType对应方法返回类型

(4)mybatis-config.xml


配置文件主要定义了:(1)POJO类的别名,便于MyBatis上下文引用;(2)JDBC的事务管理模式,数据库信息;(3)配置映射器

猜你喜欢

转载自blog.csdn.net/weixin_41914853/article/details/79940514