当前位置:首页 > 生活百科

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

栏目:生活百科日期:2025-03-20浏览:0

简述

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

MyBatis介绍

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

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工作原理及流程详细讲解,看完记得转发、点赞和收藏。想了解更多内容,请关注本小编,如果有错误,欢迎批评指正,感谢支持。

“mybatis调用存储过程详解(mybatis存储过程写法)” 的相关文章

win7怎么添加打印机到电脑上(win7添加本地打印机步骤)

打印机是我们日常办公中经常接触的设备之一,当我们在一个办公室内有多人需要使用同一台打印机的时候,网络打印机就派上用场了,网络打印机本身也属网络设备,具有自己的I...

创业加盟信息,如何选择创业项目加盟

创业方式有很多,拉投做项目的叫做创业,开家自己的小店也叫创业,甚至早起贪黑摆个摊的同样叫做创业,在众多创业的方式中,加盟创业对于广大创业者来说一点都不陌生。不过...

全新ipad验机方法,手把手教你如何识别二手机

总会有朋友买了iPad过来问我,XXX上买的XXX,你看看是不是真的?有没有问题?或者截个图,然后来问我这个屏幕完美吗?你看看我买的这个弯了吗?或者用全损音质的...

arcgis安装教程10.5汉化(arcgis教程入门到精通)

有不少深度技术用户都是技术人员,有小伙伴就需要在win10纯净版系统中使用arcgis下载安装这个软件,可能有小伙伴不知道什么是arcgis吧。其实,它是一款非...

2023年淘宝超时发货赔付规则(必知淘宝延时发货赔偿新规

为了营造更优质的市场环境,提升淘宝网的发货体验,淘宝网对《淘宝网市场管理与违规处理规范》违背承诺-违背发货时间承诺规则进行调整。此次变更于2019年8月19日进...

公众号文章怎么写才能过10万+(大V都在用的8大技巧)

一篇微信推文写好推送。首先最影响阅读量的是什么?答案会不一样,但大多数人都会很快回答:标题。那第二影响阅读量的是什么呢?答案会更加的众说纷纭,在某些情况下,我的...

如何购买阿里云服务器,阿里云服务器新手教程_1

阿里云2019双十一又被吐槽老用户与狗不得入内,优惠只针对新用户。可阿里云服务器续费那么贵,那服务器到期时怎么办呢?小编在阿里云有十几台服务器,经常为续费的问题...

win10自带清理工具好用吗(win10自带清理工具了解)

Win10自带杀毒软件究竟好不好?如果不需要怎么去关闭它?很多小伙伴win10装机后都会自带win10系统的杀毒软件,那么这个软件究竟好不好呢?其实这个软件的好...

企业估值如何计算(公司估值的4种计算方法)

今天和大家分享是我最近阅读的一本关于股票估值的书籍《财务报表分析与股票估值》,其阅读的目的重点是探究股票估值中的最佳估值方法,这本书的作者是上海国家会计学院郭永...

seo主要做什么,seo的工作内容介绍

搜索引擎优化(SEO)和长期收益。搜索引擎优化是获得长期收益的最佳营销策略。一、SEO结果需要一段时间长期收益是SEO活动的主要优势。从本质上讲,SEO是一个缓...