1. MyBatis工作流程
1.1 简略流程

- 创建
SqlSessionFactoryBuilder对象,调用build(inputstream)方法读取并解析配置文件mybatis-config.xml,返回SqlSessionFactory对象。 - 由
SqlSessionFactory创建SqlSession对象,没有手动设置的话事务默认开启。 SqlSession实例获得Mapper对象并运行Mapper映射的SQL语句,完成对数据库的CRUD和事务提交
说明:SqlSession是单线程对象,因为它是非线程安全的,是持久化操作的独享对象,类似jdbc中的Connection,底层就封装了jdbc连接。
1.2 详细流程
详细流程如下:
-
加载
mybatis全局配置文件(数据源、mapper映射文件等),解析配置文件,MyBatis基于XML配置文件生成Configuration,和一个个MappedStatement(包括了参数映射配置、动态SQL语句、结果映射配置),其对应着<select | update | delete | insert>标签项。 -
SqlSessionFactoryBuilder通过Configuration对象生成SqlSessionFactory,用来开启SqlSession。 -
SqlSession对象完成和数据库的交互:
- a)用户程序调用mybatis接口层api(即Mapper接口中的方法)
- b)SqlSession通过调用api的Statement ID找到对应的MappedStatement对象
- c)通过
Executor(负责动态SQL的生成和查询缓存的维护)将MappedStatement对象进行解析,sql参数转化、动态sql拼接,生成jdbc Statement对象 - d)JDBC执行sql。
- e)借助MappedStatement中的结果映射关系,将返回结果转化成HashMap、JavaBean等存储结构并返回。
732

被折叠的 条评论
为什么被折叠?



