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

简述本文主要介绍MyBatis框架工作原理及流程。MyBatis介绍MyBatis是一款优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBati

简述

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

MyBatis介绍

MyBatis是一款优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射原始类型、接口和JavaPOJO(PlainOldJavaObjects,普通老式Java对象)为数据库中的记录。

MyBatis架构图

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

图1 MyBatis架构图

核心类

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

SqlSessionFactory:SqlSessionFactory一旦被创建就应该在应用的运行期间一直存在,没有任何理由丢弃它或重新创建另一个实例。使用SqlSessionFactory的最佳实践是在应用运行期间不要重复创建多次,多次重建SqlSessionFactory被视为一种代码”坏习惯”。因此SqlSessionFactory的最佳作用域是应用作用域。有很多方法可以做到,最简单的就是使用单例模式或者静态单例模式。

SqlSession:每个线程都应该有它自己的SqlSession实例。SqlSession的实例不是线程安全的,因此是不能被共享的,所以它的最佳的作用域是请求或方法作用域。绝对不能将SqlSession实例的引用放在一个类的静态域,甚至一个类的实例变量也不行。也绝不能将SqlSession实例的引用放在任何类型的托管作用域中,如Servlet框架中的HttpSession。如果你现在正在使用一种Web框架,考虑将SqlSession放在一个和HTTP请求相似的作用域中。换句话说,每次收到HTTP请求,就可以打开一个SqlSession,返回一个响应后,就关闭它。这个关闭操作很重要,为了确保每次都能执行关闭操作,你应该把这个关闭操作放到finally块中。

Executor:Executor(执行器)接口有两个实现类,其中BaseExecutor有三个继承类分别是BatchExecutor(重用语句并执行批量更新),ReuseExecutor(重用预处理语句prepared statement,跟Simple的唯一区别就是内部缓存statement),SimpleExecutor(默认,每次都会创建新的statement)。

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

工作流程

首先解释下两个文件

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

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

1、 解析配置文件(MyBatis-config.xml、Mapper.xml),MyBatis基于XML配置文件生成Configuration,和一个个MappedStatement(包括了参数映射配置、动态SQL语句、结果映射配置),其对应着<select | update | delete | insert>标签项。;

2、 SqlSessionFactoryBuilder创建会话工厂SqlSessionFactory。

3、 SqlSessionFactory创建会话SqlSession;

4、 执行器将MappedStatement对象进行解析,sql参数转化、动态sql拼接,生成jdbc Statement对象,使用Paramterhandler填充参数,使用statementHandler绑定参数。

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

6、 关闭sqlsession会话。

ok,以上就是MyBatis工作原理及流程详细讲解,看完记得转发、点赞和收藏。想了解更多内容,请关注本小编,如果有错误,欢迎批评指正,感谢支持。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/43607.html

(0)
nan
上一篇 2021-11-12
下一篇 2021-11-12

相关推荐

  • 免费的qsv视频转换器推荐(爱奇艺qsv怎么播放)

    上次推了一个万兴的视频格式转换软件,有人用过之后说,好像不能转换爱奇艺qsv格式的视频,所以今天就来解决一下。废话不多说,直接上软件。这是一个很小的pc软件,专门用来转换qsv格式的影视。使用方法也很简单:在爱奇艺上面下载好之后,添加进

    2021-12-09
    0
  • 最全服装尺码对照含义(63厘米的腰围是多少尺)

    大家好~最近大家是不是都在参加双十一活动呢~这两天小白在双十一血拼购物的时候犯了难,平时购买裤子时都是根据S/M/L的尺码购买,突然有一家商家按照数字尺码来让小白选择,看着这些似识非识的数字,小白也是一脸懵逼。相信不少小伙伴也跟小白一样,

    2021-11-24 创业分享
    0
  • 男生适合做什么职业(适合男生的工作)

    说到职业选择,有很多不同的角度。有些人推崇兴趣第一,重在选择有热情有兴趣的职业;有些人推崇挣钱最大,什么挣得多干什么;还有些人追求稳定,最好是旱涝保收的铁饭碗。不过从个人综合能力成长与历练的角度,迈先生希望给大家推荐如下4个“意想不到”的职业,值得每

    2021-12-25
    0
  • u盘部分文件损坏修复方法(恢复u盘工具有哪些)

    U盘相信是现在许多人都会使用到的一个便携小工具了,而很多人不知道的是,其实对于U盘这么一个数码小玩意儿,其中还是有很多门道的。首先就是U盘品牌,很多人都觉得品牌部品牌的无所谓,只要能正常口碑复制文件就行,但其实往往一些小品牌甚至是山寨的U盘很有可能

    2022-01-03 创业分享
    0
  • 在这个流量为王的时代(佛系电商卖家还能生存吗?)

    什么是佛系电商卖家?我的理解是,不S单,不做付费流量推广,只关注产品性价比,尽量做到极致。本人就是一个类似的电商卖家,经营快10年了,佛性十足(这里说的佛性,是懒惰的同义词),但并非100%,前期也有一些小九九,但总体所占比例很低。我们

    2021-11-12
    0
  • 11 个最佳兼职在家工作(在家里就能赚钱的工作)

    全职兼职工作对各行各业的个人都有好处。与全职和/或在办公室工作相比,在家兼职工作可以为您提供更多的自由。此外,随着在家工作越来越受欢迎,您可以在舒适的家中兼职的职位有多种选择。在本文中,我们将探讨什么是兼职、在家工作以及您今天可以申请的顶

    2021-12-01
    0

发表回复

登录后才能评论