mybatis具体的执行流程
时间: 2024-04-03 16:29:25 浏览: 17
MyBatis是一种持久层框架,用于将Java对象与数据库之间进行映射。下面是MyBatis的执行流程:
1. 配置文件加载:首先,MyBatis会加载配置文件(通常是一个XML文件),该文件包含了数据库连接信息、映射文件路径等配置项。
2. 创建SqlSessionFactory:通过配置文件中的信息,MyBatis会创建一个SqlSessionFactory对象,它是MyBatis的核心对象,用于创建SqlSession。
3. 创建SqlSession:SqlSession是与数据库交互的会话对象,通过SqlSessionFactory创建。它提供了执行SQL语句、提交事务等操作。
4. 加载映射文件:SqlSession会根据配置文件中的映射文件路径加载对应的映射文件。映射文件定义了SQL语句与Java方法之间的映射关系。
5. 执行SQL语句:通过SqlSession执行具体的SQL语句。MyBatis支持多种方式执行SQL,包括直接执行SQL语句、调用存储过程等。
6. 结果映射:执行SQL语句后,MyBatis会将查询结果映射到Java对象中。这个过程可以通过配置文件中的映射规则来定义。
7. 事务管理:MyBatis支持事务管理,可以通过SqlSession进行事务的提交、回滚等操作。
8. 关闭资源:最后,需要关闭SqlSession和数据库连接等资源,释放系统资源。
相关问题
mybatis执行流程
Mybatis执行流程通常包括以下四个步骤:
1. 解析配置文件:Mybatis首先会读取并解析XML格式的配置文件,这个文件包含了数据源、SQL映射、缓存等配置信息。
2. 创建SqlSessionFactory:SqlSessionFactory是Mybatis的核心接口之一,它负责创建SqlSession对象,并提供了数据库的访问入口。创建SqlSessionFactory需要使用上一步解析得到的配置文件,并指定数据源等信息。
3. 创建SqlSession:SqlSession是执行数据操作的核心接口之一,它与数据库进行交互。SqlSession提供了多种数据操作方法,包括select、insert、update、delete等。在创建SqlSession时,需要使用SqlSessionFactory提供的openSession()方法。
4. 执行SQL语句:在获取到SqlSession之后,可以通过其提供的方法执行对数据库的操作。SqlSession提供了executor级别的操作方法,包括SimpleExecutor、ReuseExecutor和BatchExecutor等。其中SimpleExecutor将每个SQL语句封装成一个Statement对象执行,ReuseExecutor和BatchExecutor是对SimpleExecutor的优化,在执行多次相同的SQL语句时可以提高效率。
以上就是Mybatis执行流程的基本过程。在实际应用中,还需要结合具体的场景进行优化,以提高数据访问的效率和性能。
Mybatis二级缓存执行流程
当开启了二级缓存后,同一个命名空间(namespace)下的所有操作语句都会影响一个共同的cache,也就是二级缓存会被多个SqlSession共享,成为一个全局的变量。在数据查询执行的流程中,首先会经过二级缓存,然后是一级缓存,最后是数据库。具体的执行流程如下:
1. 当进行数据库操作时,首先会检查是否开启了二级缓存。如果开启了二级缓存,将会在CachingExecutor中进行二级缓存的查询。
2. 如果查询的数据在二级缓存中已存在,则直接从二级缓存中获取数据,并返回结果。
3. 如果查询的数据不在二级缓存中,则会继续执行查询操作,并将查询的结果存入二级缓存中以供后续使用。
4. 接下来,会进入一级缓存的查询流程。在同一个SqlSession内部,如果之前已经查询过相同的语句并且结果存在于一级缓存中,则直接从一级缓存中获取数据并返回结果。
5. 如果一级缓存中没有查询到结果,则会继续执行数据库查询操作,并将查询的结果存入一级缓存中以供后续使用。
6. 最后,如果在一级缓存中仍然没有查询到结果,则会从数据库中获取数据,并将查询结果存入一级缓存中。
总结起来,MyBatis的二级缓存执行流程是先经过二级缓存,再经过一级缓存,最后才是数据库查询。这样可以提高数据查询的效率,减少对数据库的访问次数。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [【MyBatis】MyBatis 二级缓存全详解](https://blog.csdn.net/qq_21383435/article/details/124768956)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]