mybatis 原理_Mybatis工作流程及其原理与解析
Mybatis简介:
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。本文将通过debug的方式来了解其工作原理。
Mybatis核心类:
SqlSessionFactory:每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或通过Java的方式构建出 SqlSessionFactory 的实例。SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在,建议使用单例模式或者静态单例模式。一个SqlSessionFactory对应配置文件中的一个环境(environment),如果你要使用多个数据库就配置多个环境分别对应一个SqlSessionFactory。
SqlSession:SqlSession是一个接口,它有2个实现类,分别是DefaultSqlSession(默认使用)以及SqlSessionManager。SqlSession通过内部存放的执行器(Executor)来对数据进行CRUD。此外SqlSession不是线程安全的,因为每一次操作完数据库后都要调用close对其进行关闭,官方建议通过try-finally来保证总是关闭SqlSession。
Executor:Executor(执行器)接口有两个实现类,其中BaseExecutor有三个继承类分别是BatchExecutor(重用语句并执行批量更新),ReuseExecutor(重用预处理语句prepared statements),SimpleExecutor(普通的执行器)。以上三个就是主要的Executor。通过下图可以看到Mybatis在Executor的设计上面使用了装饰者模式,我们可以用CachingExecutor来装饰前面的三个执行器目的就是用来实现缓存。
MappedStatement:MappedStatement就是用来存放我们SQL映射文件中的信息包括sql语句,输入参数,输出参数等等。一个SQL节点对应一个MappedStatement对象。
Mybatis工作流程:
阅读全文有惊喜哦!!!
下面将通过debug方式对Mybatis进行一步步解析。首先贴出我的mybatis-config.xml文件以及Mapper.xml文件。
<?xml version="1.0" encoding="UTF-8" ?><?xml version="1.0" encoding="UTF-8" ?> select * from user User where id = #{id} insert into User (username,birthday,sex,address) values (#{name},#{birthday},#{sex},#{address}) update User set username = #{username},birthday = #{birthday}, sex = #{sex},address = #{address} where id = #{id} delete from User where id = #{id} select * from User where sex = #{param1} and username like #{param2} and address = #{parma3} select count(*) from user where username like #{username} username like #{pattern} and sex = #{sex} and address = #{address} where id in
mybatis 原理_Mybatis工作流程及其原理与解析相关推荐
- mybatis+springMVC+spring原理及工作流程
做自己没做过的事情叫做成长 做自己不愿做的事情叫做改变 做自己不敢做的事情叫做突破 共勉 引言 本人在学习ssm中,已经能熟练的编写配置文件与代码了.但于前几天朋友问其原理与工作流程时却只能答出一二, ...
- k8s创建pod加入容器_K8S架构原理及其工作流程
K8S 容器编排系统 容器编排系统需要满足的条件: 服务注册,服务发现 负载均衡 配置.存储管理 健康检查 自动扩缩容 零宕机 K8S整体架构图 K8S整体架构 Kubernetes采用主从分布式架构 ...
- redux的原理、工作流程及其应用
redux的原理.工作流程及其使用 Redux对于JavaScript应用而言是一个可预测状态的容器.换言之,它是一个应用数据流框架,而不是传统的像underscore.js或者AngularJs那样 ...
- ceph原理及工作流程浅析
ceph工作原理及工作流程浅析 其命名和UCSC(Ceph诞生地)的吉祥物有关,这个吉祥物是"Sammy",一个香蕉色的蛞蝓,就是头足类中无壳的软体动物.这些有多触角的头足类动物, ...
- 【SEO学习】第一步:了解搜索引擎基本工作原理和工作流程
我们常用的搜索引擎一般都是百度.谷歌.搜狗.360.bing这五种,对于搜索引擎的原理和工作流程应该是一样的.今天郑州SEO老冯先给大家说一下百度搜索引擎的工作原理以及抓取过程.这是SEO学习的第一步 ...
- mybatis返回某一字段_8.mybatis的基本工作流程(2.0)※
mybatis的基本工作流程 1.读取配置文件,配置文件包含数据库连接信息和Mapper映射文件或者Mapper包路径. 2.有了这些信息就能创建SqlSessionFactory,SqlSessio ...
- Mybatis体系结构及工作流程
相关内容: 架构师系列内容:架构师学习笔记(持续更新) Mybatis工作流程 首先在MyBatis 启动的时候我们要去解析配置文件,包括全局配置文件和映射器配置文件,这里面包含了我们怎么控制MyBa ...
- Struts2的工作原理及工作流程
众所周知,Struts2是个非常优秀的开源框架,我们能用Struts2框架进行开发,同时能 快速搭建好一个Struts2框架,但我们是否能把Struts2框架的工作原理用语言表达清楚,你表达的原理不需 ...
- DLP投影机投影技术之成像原理与工作流程
DLP是数字光处理(Digital Light Processing)的缩写,是一项使用于投影仪和背投电视中的显像技术. DLP投影仪成像原理 DLP投影仪的成像原理是将通过UHP灯泡 ...
最新文章
- jquery 添加 padding_【开发小技巧】11—如何使用JavaScript / jQuery为网站创夜间/高亮模式?...
- 【Splay】【块状链表】bzoj3223 Tyvj 1729 文艺平衡树
- [转载] 基于LSTM的股票预测模型_python实现_超详细
- 装完金蝶电脑无限重启_金蝶财务软件快捷键大全,提高工作效率!
- 计算机网络管理2018版,2018~2019学年度第二学期“计算机网络管理”专业技能竞赛火热进行中...
- 基于行跟踪的ROWDEPENDENCIES ORA_ROWSCN信息
- DIV+CSS样式表命名的规则方法
- wgan 不理解 损失函数_GAN损失函数||WGAN
- CSS/HTML/JS
- matlab语音合成技术,基于MATLAB的语音处理 语音合成..doc
- 信息搜集方法小结(持续更新)
- element中el-select实现拼音搜索(el-autocomplete等下拉框搜索都可添加)
- 哈罗选了个好时点上线顺风车业务,但很可能雷声大雨点小
- python量化策略——多均值-趋势-股债轮动-策略
- 汉语计算机语言,汉语是唯一可用于计算机时代的语言!
- c语言中ch1和ch2是什么意思,2020-05-26(C语言)1.将串str中所有值为ch1的字符转换成ch2的字符,如果str为空串,或者串中不含值为ch1的字符,则什么都不做.2.逆转函数...
- socks5代理IP的几种测试工具
- 《GTD I》读书笔记
- 个人常用的sql脚本语句
- 关于用盐去黑头的亲身经历~ - 生活至上,美容至尚!