什么是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语句。
# Mybatis
# MyBatis接口的简单实现原理分析
# Mybatis接口式编程的原理
# mybatis原理概述入门教程
# Java的MyBatis框架中Mapper映射配置的使用及原理解析
# TKmybatis的框架介绍和原理解析
# 绑定
# 一处
# 可以实现
# 写在
# 配置文件
# 官网
# 更易
# 应用程序
# 自己的
# 是一个
# 实现了
# 几个
# 尤其是
# 上了
# 不太
# 有很多
# 就不
# 说了
# 之处
# 没有任何
相关文章:
制作旅游网站html,怎样注册旅游网站?
制作网站公司那家好,网络公司是做什么的?
如何彻底卸载建站之星软件?
网站制作需要会哪些技术,建立一个网站要花费多少?
广东专业制作网站有哪些,广东省能源集团有限公司官网?
已有域名如何免费搭建网站?
制作农业网站的软件,比较好的农业网站推荐一下?
简历在线制作网站免费版,如何创建个人简历?
,制作一个手机app网站要多少钱?
如何通过商城自助建站源码实现零基础高效建站?
成都响应式网站开发,dw怎么把手机适应页面变成网页?
山东网站制作公司有哪些,山东大源集团官网?
建站主机类型有哪些?如何正确选型
如何用花生壳三步快速搭建专属网站?
太平洋网站制作公司,网络用语太平洋是什么意思?
TestNG的testng.xml配置文件怎么写
再谈Python中的字符串与字符编码(推荐)
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
如何通过NAT技术实现内网高效建站?
,柠檬视频怎样兑换vip?
如何快速搭建安全的FTP站点?
如何破解联通资金短缺导致的基站建设难题?
Python如何创建带属性的XML节点
建站之星安装路径如何正确选择及配置?
网站制作公司,橙子建站是合法的吗?
如何在宝塔面板中创建新站点?
网站制作知乎推荐,想做自己的网站用什么工具比较好?
建站之星Pro快速搭建教程:模板选择与功能配置指南
GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?
如何选择靠谱的建站公司加盟品牌?
江苏网站制作公司有哪些,江苏书法考级官方网站?
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
如何挑选高效建站主机与优质域名?
建站之星多图banner生成与模板自定义指南
武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?
Bpmn 2.0的XML文件怎么画流程图
建站之星安装提示数据库无法连接如何解决?
Python文件管理规范_工程实践说明【指导】
深入理解Android中的xmlns:tools属性
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
建站之星后台密码遗忘或太弱?如何重置与强化?
如何访问已购建站主机并解决登录问题?
建站主机CVM配置优化、SEO策略与性能提升指南
北京建设网站制作公司,北京古代建筑博物馆预约官网?
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
如何使用Golang安装API文档生成工具_快速生成接口文档
c# 在ASP.NET Core中管理和取消后台任务
c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗
成都网站制作公司哪家好,四川省职工服务网是做什么用?
*请认真填写需求信息,我们会在24小时内与您取得联系。