返回
MyBatis源码解读(四)
后端
2023-11-28 09:06:17
MyBatis运行流程
3.3.1、配置解析
通过IO方式打开输入流,获取mybatis-config.xml以及xxxMapper.xml,因为在mybatis-config.xml中已经配置了mapper文件的路径,所以这里通过路径可以获取到mapper文件。解析这些XML配置文件,解析方式采用的是SAX解析,即逐行解析。这个过程会将xml文件配置信息解析成Configuration对象,该对象包含了当前运行环境的MyBatis配置,包括数据源信息、连接池信息、别名信息、对象关系映射信息等。
3.3.2、构建SqlSessionFactory
使用Configuration对象来构建SqlSessionFactory对象,SqlSessionFactory是一个线程安全的工厂对象,可以创建SqlSession对象。这个过程会创建连接池,并根据mapper文件信息,创建MappedStatement对象,并将它们存储在Configuration中。
3.3.3、获取SqlSession
从SqlSessionFactory中获取SqlSession对象,SqlSession是一个非线程安全的会话对象,负责执行数据库操作。
3.3.4、执行SQL语句
通过SqlSession对象执行SQL语句,包括查询、插入、更新、删除等操作。
3.3.5、提交事务或回滚事务
在执行完SQL语句后,如果需要提交事务,则调用SqlSession的commit()方法;如果需要回滚事务,则调用SqlSession的rollback()方法。
3.3.6、关闭SqlSession
使用完SqlSession对象后,需要调用SqlSession的close()方法,以便释放资源。
MyBatis的优势
- 易于使用: MyBatis使用XML或注解的方式来配置和映射对象关系,这使得它很容易使用和学习。
- 灵活性: MyBatis支持多种数据库,并且可以自定义SQL语句来满足不同的需求。
- 性能好: MyBatis使用缓存和批处理等技术来提高性能。
- 可扩展性: MyBatis可以通过插件扩展,以满足不同的需求。
MyBatis的局限性
- 代码侵入性: MyBatis需要在代码中编写SQL语句,这可能会导致代码难以维护和扩展。
- 可移植性: MyBatis依赖于特定的数据库,这可能会导致可移植性问题。
- 安全性: MyBatis需要开发者自己编写SQL语句,这可能会导致SQL注入等安全问题。
总结
MyBatis是一个功能强大、使用方便的ORM框架,它可以帮助开发者快速开发数据库应用。但是,MyBatis也存在一些局限性,开发者在使用时需要加以注意。