对于初学者,如果进行mybatis的学习呢?我总结了几点,会慢慢的更新出来。首先大家需要了解mybatis是什么、用mybatis来做什么、为什么要用mybatis、有什么优缺点;当知道了为什么的时候就开始了解如何用的问题,如何使用mybatis、有几种使用方式、各种方式的优缺点,在这个阶段也会学习mybatis涉及到的一些标签的用法;当知道了基础用法之后,就开始接触一些高级的用法,例如动态sql的使用、mybatis的缓存使用等;至此,在实战项目中使用mybatis进行开发已经没有问题了。

接下来就开始深入的研究一下mybatis这个持久层的框架,在纯技术的方面进行研究,提高自己的能力。首先,大家需要了解一下mybatis的整体技术架构和工作原理;接下来,就开始了解一下mybatis各大核心组件的具体功能及其工作原理。至此,算是对mybatis的原理简单的了解一下了,由于博主的能力有限,因此对于mybatis的框架技术研究也就到这里算结束了。

最后会了解一些其他的东西,例如:mybatis的逆向工程使用、如何开发一个mybatis插件,在这里会介绍一下mybatis的分页实现等。

至此,mybatis也算是入门了,出去就可以和别人说,你稍微了解mybatis框架,对其也多少有一点自己的理解和看法了。


目录

1、mybatis是什么?

2、使用mybatis可以用来做什么?为什么要用mybatis?


1、mybatis是什么?

mybatis是一款用于持久层的、轻量级的半自动化ORM框架,封装了所有jdbc操作以及设置查询参数和获取结果集的操作,支持自定义sql、存储过程和高级映射。

这句话大体是可以总结mybatis的,对于初学者来说,当看到这句话时是否会有一些问题在你脑海中产生呢?是否有如下疑问:

持久层是什么?轻量级什么概念?ORM什么意思?jdbc是什么?高级映射又是哪些映射?

接下来,一个个的解决这些问题。

持久层是什么意思呢,可以把层字去掉,持久,也就是”保持长久“的意思,他针对的是系统中数据存在的时限,而非其他。有一个基本问题大家应该知道,在内存中的数据是不持久的,如果计算机崩溃或者其他原因导致关机,数据就会丢失,但是磁盘上的数据是持久的,因此,用在持久层也就是这个框架是用来将内存中的数据写入到磁盘中的,再具体一点,就是写到数据库中。所以,总结一下,框架用于持久层,就是说这个框架是和数据库进行交互的,用于数据库中数据操作的框架。

轻量级框架的概念可以简单的理解为所用框架开发的程序启动时占用的资源少、对业务代码的侵入性不强、比较容易配置、使用和部署简单、独立部署即可使用无需依赖另外的框架,这种就是轻量级框架,相反的就是重量级。在互联网飞速发展和产品迭代更新速度如此之快的今天,轻量级的框架更容易被接受,这也是spring胜出,EJB退出的原因。

ORM,Object Relational Mapping, 直接翻译就是对象关系映射,我也没有更好的解释,看一下百科上是这样介绍的”用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的,而关系数据库则是从数学理论发展而来的,两套理论存在显著的区别。为了解决这个不匹配的现象,对象关系映射技术应运而生”。这里简单的可以这样理解,java中的数据类和数据库之间的类型系统不同,因此在使用java处理数据库时,需要进行对应的类型转化,而mybatis可以做这个事,可以将java中的类型一一映射到数据库的字段类型上,因此可以将其看作是一个ORM框架。那为什么又是半自动ORM框架呢?使用mybatis,需要手动配置pojo、sql和映射关系,用户可以自定义sql,这些sql是针对于处理数据库的,但是这些sql需要接受一些查询java类型的参数,或者是返回结果集封装到java类中,这些是需要配置的,因此mybatis是一个半自动ORM框架。说到底还是因为需要写sql,才能将数据库中的数据映射到java类中,而不是直接根据java类获取到对应数据库中数据。这里多说一下,hibernate是一个全自动的ORM框架,因为只需要提供pojo和映射关系即可,后期可以直接根据pojo获取到数据。

最后就是高级映射是什么,这里可以类比数据表之间的映射关系,也就是一对一、一对多、多对多。

2、使用mybatis可以用来做什么?为什么要用mybatis?

通过上边对mybatis的介绍,mybatis可以做什么,想必心里有点底了,mybatis主要用于j2ee企业级应用开发的持久层,用于处理java程序与数据库之间的交互。

在j2ee企业级应用开发中,其实并不只有mybatis,还有hibernate、ebean、jpa等其他持久层解决方案可以选择,那么为什么要选择使用mybatis呢?其实这个问题答案并不固定,因为,你也可以不用mybatis呀,这里就要多说一句了,互联网技术里边,除了真正存在bug的,其余的每一个技术都有存在的价值,毕竟存在即合理,之前不是有人说:“不选贵的,只选对的”,其实在技术选择上也是这个道理,适合的才是最好的,在真正应用开发时,并不是用最新的技术就是最好的,要根据自己将要开发的应用的特点、成本等多个方面进行考量到底使用什么技术。

言归正传,那么哪种项目更加适合选择使用mybatis呢?这里拿hibernate来比较一下,因为纯介绍mybatis的有特点可能感觉不出什么,hibernate和mybatis是使用最多的两个持久层框架,比较一下选择时可能会更清晰,接下来将在对ORM的支持、灵活性、开发效率、适用场景四个方面进行阐述。

hibernate是全ORM框架,mybatis是半ORM框架,需要自己写sql,其实这就是这个问题的根源,正因为特性不一样,因此就自然而然的导致了其他地方不一样。因为hibernate是全ORM框架,因此在映射规则确定的情况下只需要操作对应的java数据模型即可,因此用起来开发效率是高的(因为不需要自动维护一堆sql呀,只需要直接调用内置的方法即可),也正因为这样,映射规则的确定是复杂的,前期对象之间关系固定后,后期是不容易改变的,而转言mybatis,因为是半ORM框架,sql是自己写的,对应的映射规则也是相应维护的,因此后期如果数据模型和之间的关系改变了,mybatis改变起来更加简单;也正因为上述的,mybatis也更加灵活,正因为sql可以自己开发,因此在优化sql上更容易实现,而hibernate就不见得了;不过在开发效率上,在适合自己的领域,hibernate框架肯定是开发效率更胜一筹。

通过上边说到的,其实最本质的核心也就一个,mybatis可以自己写sql,因此灵活性更高,因此在开发一些业务经常调整的项目时可以使用,例如:电商,而hibernate则更加适合于一些业务模式固化的项目,例如:OA。

1、mybatis是什么?为什么要用mybatis?相关推荐

  1. Spring+SpringMVC+MyBatis深入学习及搭建(十)——MyBatis逆向工程

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6973266.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(九)--My ...

  2. java学mybatis还用学jdbc吗,mybatis系统学习(二)——使用基础mybatis代替原始jdbc

    mybatis系统学习(二)--使用基础mybatis代替原始jdbc 前言 这一篇笔记的内容应当是建立在上一篇的基础之上,不论是使用的数据表,还是对应的实体类,都在上一篇有过说明. 有兴趣的或者对相 ...

  3. mybatis 思维导图,让 mybatis 不再难懂(二)

    上一篇文章写了mybatis的基本原理和配置文件的基本使用,这一篇写mybatis的使用,主要包括与sping集成.动态sql.还有mapper的xml文件一下复杂配置等.值得注意的是,导图17和18 ...

  4. Mybatis学习记录(二)----mybatis开发dao的方法

    1  SqlSession使用范围 1.1 SqlSessionFactoryBuilder 通过SqlSessionFactoryBuilder创建会话工厂SqlSessionFactory 将Sq ...

  5. Mybatis入门学习---创建第一个Mybatis程序

    在这里我先给出项目的目录结构: 1.创建数据 在MySQL里面创建一个test数据库,里面有student表,数据如下: 2.创建maven项目并导入相关依赖 maven依赖如下: #pom.xml ...

  6. mybatis 传入id_想深入理解MyBatis架构及原理实例分析 把握这些就够了

    前言 MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单.优雅.本文主要讲述MyBatis的架构设计思路,并且讨论MyBatis的几个核心部件,然后结合一个select查询 ...

  7. MyBatis知多少(22)MyBatis删除操作

    本节从表中使用MyBatis删除记录. 我们已经在MySQL下有EMPLOYEE表: 1 CREATE TABLE EMPLOYEE ( 2 id INT NOT NULL auto_incremen ...

  8. spring boot 转xml格式报错解决方法_芋道 Spring Boot MyBatis 入门(一)之 MyBatis + XML...

    摘要: 原创出处 http://www.iocoder.cn/Spring-Boot/MyBatis/「芋道源码」欢迎转载,保留摘要,谢谢! 1. 概述 2. MyBatis + XML 2.1 引入 ...

  9. mybatis 忽略实体字段_27道mybatis面试真题,你能答对几道?

    1.什么是 Mybatis? 1.Mybatis 是一个半 ORM(对象关系映射)框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身,不需要花费精力去处理加载驱动.创建连接.创建stat ...

  10. Atitit.mybatis的测试  以及spring与mybatis在本项目中的集成配置说明

    Atitit.mybatis的测试  以及spring与mybatis在本项目中的集成配置说明 1.1. Mybatis invoke1 1.2. Spring的数据源配置2 1.3. Mybatis ...

最新文章

  1. 云端服务器如何调整分机显示,云电话总机分机设置_Enjoytalk云通信
  2. php new httprequest,php安装HTTP_Request2及引用介绍(通过HTTP_Request创建微软人脸识别的群组 为例)...
  3. 网站优化靠前排名讲方法
  4. BeetleX轻松搭建HTTP和Weboskcet网关
  5. 我国博士生招生规模变化、争论与进路
  6. 在EI中查找某作者的会议论文是否被收录
  7. linux 下安装ecos开发环境,Ubuntu 10.04中安装eCos 3.0
  8. 妙用TurboMail企业通讯平台,重要邮件不再躲猫猫
  9. linux文本编辑器字体大小,怎样将Linux中gcc文本编辑器的字体放大
  10. 升级在谷歌电子市场上传的应用
  11. word打开html显示空白,电脑打开Word文档内容显示不全或显示空白怎么办
  12. HDU1870 愚人节的礼物【堆栈+输入输出】
  13. linux进程创建心得体会,Linux系统下计算机C语言编程心得体会
  14. 51CTO.com 巅峰访谈:让远程接入访问变得更简单 更高效
  15. itext操作word,设置页眉页脚,html转word
  16. 简单明了的LSTM/GRU应用实例(Tensorflow版)
  17. 分享灵动MM32L052PF替代STM32F042C6T6
  18. C语言如何让一个函数返回多个值
  19. android vivo 蓝牙版本,支持蓝牙5.0手机有哪些?看完这份专业汇总报告秒懂
  20. 启程——我的2011

热门文章

  1. 小学计算机课教学设计,小学信息技术教学设计三篇
  2. zipsys驱动签名工具_全球首发 300系列主板USB WIN7 64位驱动 SMXDIY
  3. python人工智能面试题_人工智能面试题分享(含答案)
  4. 问题 B: 十进制到二进制的转换
  5. 33. 搜索旋转排序数组(013)二分查找+思路详解+来干了这杯代码!!!!!!
  6. [PAT乙级]1039 到底买不买
  7. 二叉树的遍历(算法导论第三版12.1-4)(包含先序遍历,后序遍历和中序遍历)
  8. 用python输出12和8的最大公_重点汇总-python常见问题1
  9. icoding复习3
  10. 2019-03-21-算法-进化(合并两个有序链表)