从这篇博文开始我们学习一下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项目,马上送到。
相关推荐
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 ...
MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集
MyBatis作为一个流行的持久化框架,其源码是开放的,允许开发者深入了解框架内部的实现细节。MyBatis源码体系庞大,涵盖了各种功能和模块,下面将简要描述MyBatis源码的主要组成部分以及核心工作原理。 1. 核心模块...
MyBatis是目前非常流行的一个轻巧、便利的持久化层框架。 本视频除对MyBatis日常基本使用示范外,还涉及诸多细节。以及较深入源码的讲解MyBatis运行原理、插件机制和一些企业实用场景。 视频包含:MyBatis配置文件...
它介绍了JAVAspring的ORM框架的概念、原理和作用,以及如何使用JAVAspring的ORM框架来实现数据持久化,包括JDBC、Hibernate、MyBatis等常用的ORM框架的集成和使用,以及一些配置文件和注解的用法。
答:MyBatis是一个可以自定义SQL、存储过程和高级映射的持久层框架。 2、讲下MyBatis的缓存 答:MyBatis的缓存分为一级缓存和二级缓存,一级缓存放在session里面,默认就有,二级缓存放在它的命名空间里,默认是不打开的...
MyBatis是目前非常流行的一个轻巧、便利的持久化层框架。 本视频除对MyBatis日常基本使用示范外,还涉及诸多细节。以及较深入源码的讲解MyBatis运行原理、插件机制和一些企业实用场景。 视频包含:MyBatis配置文件...
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 ...
分类专栏: java框架 文章标签: ...spring实现业务对象管理,mybatis作为数据对象的持久化引擎 springMVC执行流程: 1. 客户端将请求统一提交到DispatcherServlet; 2. DispatcherServlet会将请求交给HandlerMapping
项目概述:本项目致力于SSM(Spring、SpringMVC、MyBatis)框架的应用实战,...通过本项目,开发者可以深入理解SSM框架的原理与使用方式,同时掌握基于此框架的实战开发技巧,对于学习Java Web开发具有较好的参考价值。
MyBatis:作为持久层框架,MyBatis提供了对数据库的访问和操作,通过XML或注解映射SQL语句与Java方法,从而实现数据的持久化和查询。 用到的技术: HTML/CSS/JavaScript:前端技术用于构建用户界面和实现交互效果。...
spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层四层使用springMVC负责请求的转发和视图管理spring实现业务对象管理,mybatis作为数据对象的持久化引擎...
MyBatis是目前非常流行的一个轻巧、便利的持久化层框架。 本视频除对MyBatis日常基本使用示范外,还涉及诸多细节。以及较深入源码的讲解MyBatis运行原理、插件机制和一些企业实用场景。
主要是基于springboot+vue框架的在线考试系统的设计与实现,包括、管理员、教师管理、学生三个分配角色、在线考试、成绩查询...2.后台设计:采用Spring进行对象管理,采用MyBatis作为持久化工具。Mysql作为后台数据库。
在技术实现上,本项目充分利用了Spring Boot框架的自动化配置和快速开发能力,结合Spring MVC、MyBatis等技术,实现了前后端的高效交互与数据的持久化存储。此外,系统还采用了先进的推荐算法,根据用户的健康数据和...
持久化(AOF 和 RDB) 集群、哨兵 集群模式下的发布订阅模式失效 6节点,三主(哨兵)三备 MySQL MongoDB 分布式 [如果再有人问你分布式ID,这篇文章扔给他]( ID,这篇文章丢给他.md) 微服务 SpringBoot [SpringBoot...