持久层框架:MyBatis 3.2(1)

摘要:
MyBatis是iBatis的前身。它是一个数据持久层框架。iBATIS提供的持久层框架包括SQLMaps和DataAccessObjects,还提供了使用此框架开发的JPetStore实例。当您看到Mybatis的框架图时,您可以清楚地看到Mybati的整体核心对象。我更喜欢用我自己的图表来表达Mybatis的整个执行过程。MyBatis有优点也有缺点:1.学习MyBatis很容易,它小巧简单。Mybatis没有hibernate那么强大,但Mybatis最大的优点是它简单小巧,易于使用,浏览和修改SQL语句也很方便。

MyBatis 的前身就是 iBatis 。是一个数据持久层(ORM)框架。

持久层框架:MyBatis 3.2(1)第1张

iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO),同时还提供一个利用这个框架开发的 JPetStore实例。

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

             持久层框架:MyBatis 3.2(1)第2张

原理详解:

        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语句。

免责声明:文章转载自《持久层框架:MyBatis 3.2(1)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Java 9 尝鲜之JShell交互式编程环境【数论】C.Orac and LCM下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

postgresql批量备份和恢复数据表

备份数据库:pg_dump -h localhost -U root demo02 > /home/arno/dumps/demo02.bak恢复数据库:psql -h localhost -U root -d demo <  demo.bak备份表:pg_dump -h localhost -U root demo02 -t books &g...

9 个基于JavaScript 和 CSS 的 Web 图表框架

COMSHARP CMS 写道:jQuery, MooTools, Prototype 等优秀的 JavaScript 框架拥有各种强大的功能,包括绘制 Web图表,使用这些框架以及相应插件,我们可以非常轻松地实现曲线图,圆饼图,柱状图等 Web 图表的绘制,而不必象以往那样通过复杂的 Flash技术实现。本文介绍了9个优秀的基于 JavaScript 与...

六、对ES增删改查

一、ES的数据结构 ES跟MySQL有很大的区别,现在将MySQL跟ES做对比,这样方便理解。 因为ES数据库是通过API接口进行访问的,访问的方式有如下几种 1、es-head插件 2、kibana控制台 3、curl命令 4、Postman工具 1、ES数据库结构对比 MySQL术语 ES术语 库,databases 索引,index 表...

python—mysql小结

---恢复内容开始--- 数据库就是一种特殊的文件,里面存了需要的数据 现在主要是关系型数据库学习——RDBMS;还有非关系型 mysql是现在应用最广泛关系数据库 关系型数据库核心元素是数据行(记录);数据列(字段);数据表(数据行的集合);数据库(数据表的集合)。 SQL是结构化查询语言,用来操作关系型数据库的 重点是数据查询语言(DQL),数据操作语...

MVC5 + EF6 完整入门教程三

期待已久的EF终于来了。 学完本篇文章,你将会掌握基于EF数据模型的完整开发流程。 本次将会完成EF数据模型的搭建和使用。 基于这个模型,将之前的示例添加数据库查询验证功能。 文章提纲 概述 & 要点 详细步骤 总结 概述 & 要点 下面是本文要点,正文部分会有详细介绍。 EF架构图 新建基于EF的Data Model的约定 关于ORM的...

java数据库操作

数据库操作可以中WEB开发中最常用到的,很多Java开发工具都提供了自动的Data bean WinZard.只要数据库建立好,相应的操作数据库的Bean就基本可以自动完成,本人使用Jcreator开发bean,手工录入觉得也不是很麻烦的事情,下面我常用的数据库操作bean,完全可以对付访问量不是很大的系统 : /***//**publicclassMy...