mybatis调用存储过程详解 mybatis存储过程写法

简历本文主要介绍MyBatis框架的工作原理和流程。MyBatis简介MyBatis是一个优秀的持久层框架,支持定制SQL、存储过程和高级映射。MyBatis消除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注释将原语类型、接口和Java POJOs(普通旧Java对象...

简历

本文主要介绍MyBatis框架的工作原理和流程。

MyBatis简介

MyBatis是一个优秀的持久层框架,支持定制SQL、存储过程和高级映射。MyBatis消除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注释将原语类型、接口和Java POJOs(普通旧Java对象)配置和映射到数据库中的记录中。

MyBatis架构图

图1 MyBatis架构图

核心类

SqlSessionFactorybuilder:这个类可以实例化、使用和丢弃。一旦创建了sqlsessionfactory,就不再需要它了。因此,SqlSessionFactoryBuilder实例的最佳作用域是方法作用域(即局部方法变量)。可以重用SqlSessionFactoryBuilder来创建SqlSessionFactory的多个实例,但最好不要一直保留它,以确保所有的XML解析资源都可以释放到更重要的事情上。

SQLSSESSIONFactory:一旦创建,SQLSSESSIONFactory应该在应用程序运行期间一直存在。没有理由丢弃它或重新创建另一个实例。使用SqlSessionFactory的最佳做法是不要在应用程序运行期间重复创建它。多次重建SqlSessionFactory算是一种代码”坏习惯”。因此,SqlSessionFactory的最佳范围是应用程序范围。有很多方法可以做到这一点。最简单的一种是使用单例模式或静态单例模式。

SqlSession:每个线程都应该有自己的SQL会话实例。SqlSession的实例不是线程安全的,因此不能共享,因此它的最佳作用域是请求或方法作用域。永远不能将SqlSession实例的引用放在类的静态域中,即使是类的实例变量。您永远不能将SqlSession实例的引用放在任何类型的托管范围内,例如Servlet框架中的HttpSession。如果现在使用的是Web框架,可以考虑将SqlSession放在类似HTTP request的作用域中。换句话说,每次收到HTTP请求时,可以打开一个SqlSession,在返回响应后,可以关闭它。这个封闭操作非常重要。为了确保每次都能执行关闭操作,应该将这个关闭操作放在finally块中。

executor:executor接口有两个实现类,其中BaseExecutor有三个继承类:BatchExecutor(重用语句并执行批量更新)、ReuseExecutor(重用准备好的语句,与Simple的唯一区别是内部缓存语句)、SimpleExecutor(默认情况下每次都会创建一个新的语句)

映射语句:用来存储我们的sql映射文件的信息包括SQL语句、输入参数、输出参数等等。一个SQL节点对应一个MappedStatement对象。

工作流程

首先解释下两个文件。

Mybatis-config.xml:全局配置文件,介绍了数据源、事务等Mybatis运行环境;

Mapper.xml:配置映射文件,配置sql结果集的封装类型和参数传递类型;

1.解析配置文件(MyBatis-config.xml,Mapper.xml),MyBatis基于xml配置文件生成配置,MappedStatement(包括参数映射配置,动态SQL语句和结果映射配置),对应<>

2.SqlSessionFactoryBuilder创建会话工厂。

3.SqlSession工厂创建一个会话SqlSession

4.执行器解析MappedStatement对象,转换sql参数,动态拼接sql生成jdbc Statement对象。Paramterhandler用于填充参数,statementHandler用于绑定参数。

5.JDBC执行sql。借助MappedStatement中的结果映射关系,使用ResultSetHandler将返回的结果转换成HashMap、JavaBean等存储结构并返回。

6.关闭sqlsession会话。

好了,以上就是对MyBatis工作原理和流程的详细说明。看完记得转发,点赞,收藏。更多信息请关注这个小编。如有错误,请批评指正。谢谢你的支持。

本文来自西绿柿投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/639519.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
() 0
上一篇 07-18
下一篇 07-18

相关推荐

  • 超出显示省略号兼容写法 css文字溢出变省略号

    讲讲css最常见的知识,实现单行和两行文字溢出显示省略号!如果实现单行文本溢出来显示省略号,同学们应该都知道使用text-overflow的属性:省略号,当然你需要加上宽度来兼容部分浏览。效果如下:多行文本溢出显示省略号的方法;

    2023-07-20 08:14:01
    278 0
  • mybatis调用存储过程详解 mybatis存储过程写法

    简历本文主要介绍MyBatis框架的工作原理和流程。MyBatis简介MyBatis是一个优秀的持久层框架,支持定制SQL、存储过程和高级映射。MyBatis消除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注释将原语类型、接口和Java POJOs(普通旧Java对象

    2023-07-18 14:54:01
    951 0
  • 推介词什么意思(推介词的写法和格式)

    推荐词,其实可以从字面上理解,就是推荐词,对应的是异形词。外来词是指普通话书面语**存并使用的同音异义词和同义词,如“忍”“顺”“划”“划”。下面是一些推荐词和异形词的例子。破折号前的字是推荐字,后面是异形字。根据例子,我们很好的理解了什么是推荐词。比如:抱

    2023-07-12 08:20:01
    143 0
  • 墓碑标准写法是怎样的?(普通百姓墓碑标准写法是怎么样的)

    01墓碑正面标有墓中人的姓名、立碑人和立碑时间。这些纪念碑大多是由死者的后代竖立的。还有学生为老师立墓碑,女婿为公公婆婆立墓碑,丈夫为妻子立墓碑,妻子为丈夫朋友立墓碑。墓志铭很小,多为方形,刻上石头,加盖一个官员和某人的墓志铭,称为& 封面。是& 印章还有& 封面

    2023-07-06 20:44:01
    1002 0

评论列表

联系我们

在线咨询: QQ交谈

邮件:admin@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信