首页 > 编程知识 正文

servlet工作原理,spring mybatis原理

时间:2023-05-04 23:38:42 阅读:175670 作者:1356

Mybatis原理概述Mybatis是一个很好的持久层框架,支持定制的SQL、存储过程和高级映射。 MyBatis几乎避免所有的JDBC代码,手动设置参数并检索结果集。 MyBatis使用简单的XML或注释将本机类型、接口和Java的POJO(plainoldJavaobjects,常见的旧Java对象)配置为数据库中的记录1 .我的电池体系结构图

2.mybatis核心组件SqISessionFactoryBuilder (生成器) :基于配置信息或Java代码构建SqlSessionFactory对象。 创建角色:sqlsessionfactory对象。 会话工厂:类似于数据来源。 线程安全,不要在APP应用程序运行时多次重复创建。 建议使用单实例模式。 角色:创建SqlSession对象SqlSession (会话) :就像一个连接,线程不安全。 每次使用打开新的SQLsession对象时,都会成功关闭已使用的SQLsession对象,缺省情况下将使用DefaultSqlSession。 提供用于操作数据库的增删方法。 您可以调用操作方法,也可以使用Mapper组件。 执行机构: SqlSession本身不能直接与数据库交互。 必须在Executor中进行。 此接口包含两个实现:缓存致动器)的基本致动器)。 映射语句:封装映射语句(映射语句)执行语句时的SQL、输入参数、输出结果原理图等信息:

更具体的基础原理图

相关对象:

配置: my batis全局配置对象,封装所有配置信息

SqlSession:表示与数据库交互的会话,并完成所需的数据库添加、删除和修改功能

Executor:执行器是mybatis调度的核心,负责sql语句的生成和查询缓存的维护

BaseExecutor :最底层的执行器首先从一级缓存中获取查询,如果没有带有查询数据库CachingExecutor二级缓存的执行器,则首先在二级缓存中获取数据statement handler 封装JDBC的DML、DQL操作和参数设置

ParameterHandler :参数处理器,将用户输入的参数转换为JDBC所需的参数值ResultSetHandler :结果集处理器,结果集数据列表集合type handle

映射语句对象维护“插入”节点的封装

SqlSource : SQL源。 基于从用户传递的参数生成SQL语句,封装到BoundSql中的BoundSql : SQL绑定中,并提供SQL语句和相应的参数信息3 .范围和生命周期sqisessionfactorybuilding

这个类可以被实例化、使用和丢弃,一旦创建了SqlSessionFactory ,就不再需要它了因此,SqlSessionFactoryBuilder实例的最佳作用域是方法作用域或局部方法变量。 虽然可以重用SqlSessionFactoryBuilder来创建多个SqlSessionFactory实例,但最好不要总是存在,以确保所有XML解析资源对更重要的事情开放

sqlsessionfactory http://www.Sina.com /没有任何理由删除或重建SqISessionFactory。 使用SqISessionFactory的最佳做法是在APP应用程序运行时不要多次重建。 此外,多次重建sqlsessionfactory会被视为代码“不好的味道”(虽然有很多方法,但最简单的方法是使用单实例模式或静态单实例模式SqlSession

每个线程都需要自己的SqlSession实例。 请求范围或方法范围一旦被创建就应该在应用的运行期间一直存在 (单例)是最佳的,因为SqlSession实例不是线程安全的且不能共享。 此外,不能将对SqlSession实例的引用放在任何类型的管理范围(如servlet架构的HttpSession )中。 如果当前使用的是Web框架,请考虑将SqISession放在与HTTP请求对象相同的作用域中。 这意味着每次收到HTTP请求时都要打开Sq|Session,每次返回响应时都要关闭。 这个关机操作很重要。 必须将此关闭操作放入finally块中,以便每次都可以执行关闭操作。

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