首页 > 编程知识 正文

mybatis是如何工作的,mybatis之工作原理

时间:2023-05-05 04:00:42 阅读:175660 作者:4164

加载mybatis全局配置文件(数据源、映射文件等),分析配置文件,mybatis基于XML配置文件生成配置,然后选择| uutatement对应的映射语句)和)参数映射配置、动态SQL语句、结果映射配置的SqlSessionFactoryBuilder从配置对象到SqlSession SqlSession对象完成与数据库的交互。 用户程序调用mybatis接口层api或Mapper接口中的方法。 SqlSession调用api的语句id以找到对应的映射语句对象,然后通过执行程序由负责动态SQL生成和查询缓存维护的ent对象进行分析生成jdbc Statement对象,将参数handler嵌入参数,并将statementHandler绑定到参数。 JDBC执行sql。 使用映射语句的结果映射关系,使用ResultSetHandler将返回的结果转换为HashMap、JavaBean等存储结构并返回。 关闭SQL会话。 33558 www.Sina.com/configurationmybatis所有配置信息都存储在configuration对象中,配置文件中的大多数配置都存储在此类的SqlSession中。 它是运行mybatis的顶级API,表示与数据库交互的会话。 完成所需数据库的添加、删除和修改功能的Executor MyBatis执行器是MyBatis调度的核心,负责SQL语句生成和查询缓存维护的StatementHandler负责JDBC Statement操作参数handler (包括参数的设置)将传递给用户的参数转换为与JDBC Statement相对应的数据类型。ResultSetHandler列出了从JDBC返回的ResultSet结果集对象java数据类型和JDBC数据类型(列类型) )之间的映射和转换映射状态为封装insert节点SqlSource根据用户传递的参数对象动态生成SQL语句,将信息封装在中,并返回动态生成的SQL语句及其相应的参数在SQL操作中,需要注意的是SQL参数的设置以及结果集如何转换为JavaBean对象。 这两个进程正好对应于StatementHandler和ResultSetHandler类的处理逻辑。

MyBatis的主要成员MyBatis提供查询缓存,以减轻数据库压力并提高性能。 MyBatis提供了一级缓存和二级缓存。

一级缓存是SqlSession级别的缓存,每个SqlSession对象都有一个用于缓存数据的散列表,不同的SqlSession对象之间不共享缓存。 如果同一SqlSession对象执行两次相同的SQL查询,并在第一次查询执行完成后缓存结果,则第二次查询可以返回缓存的结果,而无需查询数据库。 MyBatis在缺省情况下启用了l1缓存。

二级缓存是映射器级别的缓存,二级缓存跨越SqlSession,多个SqlSession对象可以共享同一个二级缓存。 当不同的SqlSession对象执行两次相同的SQL语句时,第一次会缓存查询的结果,第二次查询会直接返回次缓存的结果。 MyBatis默认情况下不会打开二级缓存。 您可以在配置文件中使用以下配置打开二级缓存: 当SQL语句执行更新操作(删除/添加/更新)时,相应的缓存将为空,以确保缓存中存储的所有数据都是最新的。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。