一篇文章深入浅出带你了解mybatis
什么是mybatis:
Mybatis本质是一种半自动化的ORM框架,前身是ibatis,除了要pojo和映射关系之外,还需要些sql语句。
怎么看待ORM框架:
处理矛盾的,java程序员喜欢面向对象开发和面向接口开发,而数据库是一张张表和一个个库组成的,这两者的关系很难调和,而关系型映射解决了这一个问题。
Mybatis映射文件三要素:SQL;映射规则;Pojo;
为什么要用mybatis而不用hibernate?
在我们互联网的环境里面, 我们经常要面对海量数据,所以我们要基于底层的调优能力,就是sql语句。而hibernate生成的sql语句很不透明。
Mybatis核心流程三大阶段:
初始化阶段,读取XML配置文件和注解中的配置信息,创建解析对象,并完成各个模块的初始化工作。就是把我们的配置文件加载到内存里面去。在sqlSession初始化的时候加载到内存中去的。
代理阶段,封装iBatis的编程模型,使用mapper接口开发的初始化工作;
数据读写阶段,通过SqlSession完成SQL的解析,参数的映射,SQL的执行,结果的反射解析过程。
SqlSession
SqlSession意味着创建数据库会话,代表了一次与数据库的连接;
是mybatis对外提供数据访问的主要API;
实际上SqlSession的功能都是基于Excutor来实现的。
Mybatis的两种编程模型Mybatis封装了ibatis编程模型,使用sqlsession对外提供数据库的访问。还有一种是使用mapper接口编程,就可以访问数据库
Mybatis和ibatis的区别
Mybatis前身是ibatis的,ibatis之前是Apache旗下的产品,后来到了谷歌旗下,但是谷歌发现ibatis实现起来很麻烦,还需要维护静态变量,并且没有业务含义。所以谷歌改成了mybatis,通过面向接口的方式,让所有代码有了业务含义,屏蔽掉了底层代码的复杂性。
为什么使用mapper接口就可以对数据库进行访问了呢?
其实最后它还是转成了底层的ibatis执行方法,它会使用配置文件解读+动态代理, 找到session中的对应方法执行,找到方法的命名空间和方法名。传递参数。
业务流程还是首先要实例化sqlssessionFactory,加载数据库配置文件以及mapper.xml到configuration对象。然后获取sqlsession对象。然后通过动态代理跨越面向接口编程和ibatis编程的鸿沟,最后遵循jdbc的规范,通过底层的四大对象合作完成功能。
喜欢这篇文章的可以给笔者点个赞,关注一下,每天都会分享Java相关文章!还有不定时的福利赠送,包括整理的学习资料,面试题,源码等~~
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
阿里云新版人脸识别 C# 使用示例教程
概述 前面分别介绍了新版人脸识别服务接口的开通、JAVA SDK对通用人脸识别通用方法的调用及1:N人脸识别接口的调用,可以参考阿里云人脸识别公测使用说明与阿里云人脸识别 1:N 使用简明示例,本文主要介绍如何使用C# 程序调用阿里云新版人脸识别接口。 操作步骤 1、SDK下载:aliyun-net-sdk-core 2、Code Sample using Aliyun.Acs.Core; using Aliyun.Acs.Core.Http; using Aliyun.Acs.Core.Profile; using System; namespace FaceDemo { class Program { static void Main(string[] args) {
- 下一篇
javascript之有趣的【BOM】(精讲)
Bom知识不难,就是东西比较多,耐心理解此篇文章,会让你收获满满。相信自己,认真看完。 BOM(全称:BrowserObjectModel)浏览器模型 有很多小白同学一听到Bom这个词,瞬间晕倒,根本不懂到底是什么,看以上的全称来翻译,就是浏览器中的东西,我们前端浏览器的主要方式在开发中来讲,核心就是window。很多同学还听过一个词叫Dom,初学者来讲,这两个很容易让人有“跳楼”的想法,其实学好了这两个,js中也就明白了一半的知识。 先说说这两个的区别,学过html的同学都知道,html主要是使用标签,标签在页面中其实就是以节点的方式存在的,比如各种嵌套,就是分了很多的标签节点,然后才能开发出想要的布局页面。那么Dom其实就是在用js控制这些标签节点,然后操作各种事情。比如用js创建一个a标签,就可以说创建了一个节点;再或者,用js写出a标签的样式,就可以说控制了节点的样式。完全可以这样理解,但心里要明白,这个标签是js创建出来的,js控制了Dom节点,而非html写出来的,两者是有本质上的区别。那么Bom是来操作浏览器窗口的,比如你alert出一个弹窗,就是在操作Bom,你打开一个...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Red5直播服务器,属于Java语言的直播服务器
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS6,CentOS7官方镜像安装Oracle11G
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装