`

【持久化框架】Mybatis简介与原理

阅读更多

从这篇博文开始我们学习一下Mybatis,希望大家提出宝贵的建议。

 

什么是Mybatis

 

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。

MyBatis参考资料官网:https://mybatis.github.io/mybatis-3/zh/index.html

官网对Mybatis的介绍更加具有权威性:

 

   MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手工设置参数以及抽取结果集。MyBatis 使用简单的 XML 或注解来配置和映射基本体,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

 

 

 

MyBatis是iBatis的升级版,用法有很多的相似之处,但是MyBatis进行了重要的改进。例如:

 

1、Mybatis实现了接口绑定,使用更加方便。

 

在ibatis2.x中我们需要在DAO的实现类中指定具体对应哪个xml映射文件, 而Mybatis实现了DAO接口与xml映射文件的绑定,自动为我们生成接口的具体实现,使用起来变得更加省事和方便。

 

2、对象关系映射的改进,效率更高

 

3、MyBatis采用功能强大的基于OGNL的表达式来消除其他元素。

 

对于IBatis与MyBatis的区别就不再多说了,感兴趣的朋友可以研究一下。

 

MyBatis的框架架构

 


看到Mybatis的框架图,可以清晰的看到Mybatis的整体核心对象,我更喜欢用自己的图来表达Mybatis的整个的执行流程。如下图所示:

原理详解:

MyBatis应用程序根据XML配置文件创建SqlSessionFactory,SqlSessionFactory在根据配置,配置来源于两个地方,一处是配置文件,一处是Java代码的注解,获取一个SqlSession。SqlSession包含了执行sql所需要的所有方法,可以通过SqlSession实例直接运行映射的sql语句,完成对数据的增删改查和事务提交等,用完之后关闭SqlSession。

 

MyBatis的优缺点

 

优点:

1、简单易学

mybatis本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。

 

2、灵活

mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。

 

3、解除sql与程序代码的耦合

通过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。

 

4、提供映射标签,支持对象与数据库的orm字段关系映射


5、提供对象关系映射标签,支持对象关系组建维护


6、提供xml标签,支持编写动态sql。

 

缺点:

 

1、编写SQL语句时工作量很大,尤其是字段多、关联表多时,更是如此。


2、SQL语句依赖于数据库,导致数据库移植性差,不能更换数据库。

 

3、框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改。

 

4、二级缓存机制不佳

 

总结

 

mybatis的优点同样是mybatis的缺点,正因为mybatis使用简单,数据的可靠性、完整性的瓶颈便更多依赖于程序员对sql的使用水平上了。sql写在xml里,虽然方便了修改、优化和统一浏览,但可读性很低,调试也非常困难,也非常受限。

mybatis没有hibernate那么强大,但是mybatis最大的优点就是简单小巧易于上手,方便浏览修改sql语句。

 

下篇博文,我们搭建一个简单的Spring和Mybatis集成的Web项目,马上送到。

 

 

分享到:
评论

相关推荐

    mybatis3.0原理+API注意事项

    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 ...

    Mybatis 简介与原理

    MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集

    mybatis-3-mybatis-3.5.13.zip

    MyBatis作为一个流行的持久化框架,其源码是开放的,允许开发者深入了解框架内部的实现细节。MyBatis源码体系庞大,涵盖了各种功能和模块,下面将简要描述MyBatis源码的主要组成部分以及核心工作原理。 1. 核心模块...

    尚硅谷_MyBatis.docx

    MyBatis是目前非常流行的一个轻巧、便利的持久化层框架。 本视频除对MyBatis日常基本使用示范外,还涉及诸多细节。以及较深入源码的讲解MyBatis运行原理、插件机制和一些企业实用场景。 视频包含:MyBatis配置文件...

    编程语言+JAVAspring+ORM框架+数据持久化

    它介绍了JAVAspring的ORM框架的概念、原理和作用,以及如何使用JAVAspring的ORM框架来实现数据持久化,包括JDBC、Hibernate、MyBatis等常用的ORM框架的集成和使用,以及一些配置文件和注解的用法。

    mybatis面试题专项

    答:MyBatis是一个可以自定义SQL、存储过程和高级映射的持久层框架。 2、讲下MyBatis的缓存 答:MyBatis的缓存分为一级缓存和二级缓存,一级缓存放在session里面,默认就有,二级缓存放在它的命名空间里,默认是不打开的...

    JAVAEE主流框架之MyBatis框架实战开发教程(源码+讲义)

    MyBatis是目前非常流行的一个轻巧、便利的持久化层框架。 本视频除对MyBatis日常基本使用示范外,还涉及诸多细节。以及较深入源码的讲解MyBatis运行原理、插件机制和一些企业实用场景。 视频包含:MyBatis配置文件...

    腾讯T4架构师耗时八个月整理《深入浅出MyBatis技术原理与实战》

    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 ...

    SSM框架原理 spring-mvc执行流程

    分类专栏: java框架 文章标签: ...spring实现业务对象管理,mybatis作为数据对象的持久化引擎 springMVC执行流程: 1. 客户端将请求统一提交到DispatcherServlet; 2. DispatcherServlet会将请求交给HandlerMapping

    基于SSM框架的CRUD操作实战源码学习与总结

    项目概述:本项目致力于SSM(Spring、SpringMVC、MyBatis)框架的应用实战,...通过本项目,开发者可以深入理解SSM框架的原理与使用方式,同时掌握基于此框架的实战开发技巧,对于学习Java Web开发具有较好的参考价值。

    Java+SSM+订餐系统

    MyBatis:作为持久层框架,MyBatis提供了对数据库的访问和操作,通过XML或注解映射SQL语句与Java方法,从而实现数据的持久化和查询。 用到的技术: HTML/CSS/JavaScript:前端技术用于构建用户界面和实现交互效果。...

    SSM框架原理,作用及使用方法

    spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层四层使用springMVC负责请求的转发和视图管理spring实现业务对象管理,mybatis作为数据对象的持久化引擎...

    MyBaits视频教程

    MyBatis是目前非常流行的一个轻巧、便利的持久化层框架。 本视频除对MyBatis日常基本使用示范外,还涉及诸多细节。以及较深入源码的讲解MyBatis运行原理、插件机制和一些企业实用场景。

    springboot+vue计算机毕业设计javaweb在线考试系统设计与实现web(含源码及数据库文件)

    主要是基于springboot+vue框架的在线考试系统的设计与实现,包括、管理员、教师管理、学生三个分配角色、在线考试、成绩查询...2.后台设计:采用Spring进行对象管理,采用MyBatis作为持久化工具。Mysql作为后台数据库。

    Java毕业设计-基于springboot开发的智能推荐卫生健康系统-毕业论文(附毕设源代码).rar

    在技术实现上,本项目充分利用了Spring Boot框架的自动化配置和快速开发能力,结合Spring MVC、MyBatis等技术,实现了前后端的高效交互与数据的持久化存储。此外,系统还采用了先进的推荐算法,根据用户的健康数据和...

    java7hashmap源码-java-note:笔记

    持久化(AOF 和 RDB) 集群、哨兵 集群模式下的发布订阅模式失效 6节点,三主(哨兵)三备 MySQL MongoDB 分布式 [如果再有人问你分布式ID,这篇文章扔给他]( ID,这篇文章丢给他.md) 微服务 SpringBoot [SpringBoot...

Global site tag (gtag.js) - Google Analytics