Mybatis是什么以及Mybatis和JDBC的关系?
文章目录
- Mybatis是什么
- Mybatis和JDBC的关系
- MyBatis的优点和缺点
Mybatis是什么
mybatis是一个持久层ORM框架。它内部封装了jdbc,使得开发更简洁,更高效。
Mybatis使开发者只需要关注sql语句本身,简化JDBC操作,不需要在关注加载驱动、创建连接、处理SQL语句等繁杂的过程。
MyBatis可以通过xml或注解完成ORM映射关系配置。
Mybatis和JDBC的关系
JDBC是Java提供的一个操作数据库的API; MyBatis是一个持久层ORM框架,底层是对JDBC的封装。
MyBatis对JDBC操作数据库做了一系列的优化:
(1) mybatis使用已有的连接池管理,避免浪费资源,提高程序可靠性。
(2) mybatis提供插件自动生成DAO层代码,提高编码效率和准确性。
(3)mybatis 提供了一级和二级缓存,提高了程序性能。
(4) mybatis使用动态SQL语句,提高了SQL维护。(此优势是基于XML配置)
(5) mybatis对数据库操作结果进行自动映射
MyBatis的优点和缺点
优点:
简单:易于学习,易于使用,通过文档和源代du码,可以比较完全zhi的掌握它的设计思路和实现。
实用:提供了数据映射功能,提供了对底层数据访问的封装(例如ado.net),提供了DAO框架,可以使我们更容易的开发和配置我们的DAL层。
灵活:通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。
功能完整:提供了连接管理,缓存支持,线程支持,(分布式)事物管理,通过配置作关系对象映射等数据访问层需要解决的问题。提供了DAO支持,并在DAO框架中封装了ADO.NET,NHibernate和DataMapper。
增强系统的可维护性:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
缺点:
sql工作量很大,尤其是字段多、关联表多时,更是如此。
sql依赖于数据库,导致数据库移植性差。
由于xml里标签id必须唯一,导致DAO中方法不支持方法重载。
字段映射标签和对象关系映射标签仅仅是对映射关系的描述,具体实现仍然依赖于sql。(比如配置了一对多Collection标签,如果sql里没有join子表或查询子表的话,查询后返回的对象是不具备对象关系的,即Collection的对象为null)。
DAO层过于简单,对象组装的工作量较大。
不支持级联更新、级联删除。
编写动态sql时,不方便调试,尤其逻辑复杂时。
提供的写动态sql的xml标签功能简单(连struts都比不上),编写动态sql仍然受限,且可读性低。
使用不当,容易导致N+1的sql性能问题。
Mybatis是什么以及Mybatis和JDBC的关系?相关推荐
- mybatis学习笔记(1)-对原生jdbc程序中的问题总结
2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(1)-对原生jdbc程序中的问题总结 标签:mybatis [TOC] 本文总结jdbc编程的一般步骤 ...
- 从JDBC到Mybatis以及IDEA通过mybatis开发Springboot
文章目录 一.简介 二.问题描述 三.IDEA通过mybatis开发Springboot 3.1 新建工程 3.2 配置相关信息 3.3 项目编写及业务流程 3.4 测试 四.总结 五.参考文献 一. ...
- MyBatis - 6.Spring整合MyBatis
1.查看不同MyBatis版本整合Spring时使用的适配包: http://www.mybatis.org/spring/ 2.下载整合适配包 https://github.com/mybatis/ ...
- MyBatis学习总结(1)——MyBatis快速入门
2019独角兽企业重金招聘Python工程师标准>>> 一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所 ...
- MyBatis简介与配置MyBatis+Spring+MySql
一.MyBatis简介与配置MyBatis+Spring+MySql 原文出自:http://limingnihao.iteye.com/blog/781671 MyBatis学习 之 一.MyBat ...
- Mybatis学习第一天——Mybatis的安装配置以及基本CURD操作
1.Mybatis下载 Mybatis是开源的持久层框架,能够度jdbc进行简单的封装,但其并不是完全的ORM(Object Relational Mapping,对象关系映射),无法脱离数据库进行适 ...
- MyBatis源码分析——MyBatis的扩展点(pugins)
1.MyBatis扩展点plugins mybatis的扩展是通过拦截器Interceptor来实现的,本质上就是JDK的动态代理,所以它只能对接口进行拦截,我们一步步看一下MyBatis是如何将这些 ...
- SpringBoot 2.x 整合Mybatis三:tk.mybatis
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/80734057 本文出自[赵彦军的博客] 简介 地址:https://github. ...
- mybatis 学习笔记:mybatis 初认识
简介 MyBatis是一个Java持久层框架,它通过XML描述符或注解把对象与存储过程或SQL语句关联起来.mybatis 可以将 preparedStatement 中的输入参数自动进行映射,将查询 ...
最新文章
- 双十一秒杀架构模型设计实践!
- ROCK 聚类算法
- 【Anychat音视频开发】相对路径与绝对路径详解
- Django模板渲染——(二)
- csi python 摄像头 树莓派_树莓派之摄像头和人脸识别
- 滴!你的“十三香”已发货,iPhone 13系列今日正式发售
- pandas object格式转float64格式
- 机器人开发--编码器
- 计算机不联网会有ip地址吗,不联网的电脑有ip地址吗
- python 等高线图标注,罗兰贝格图--Python等高线图(平滑处理)
- mysql rps和tps区别_并发虚拟用户、RPS、TPS的解读
- Oracle ora-12514报错解决方法
- 已解决:Win10无法访问Samba共享文件夹
- Css中路径data:image/png;base64的用法详解 (转载)
- 【论文笔记】CIRNet:基于CycleGAN的无监督循环配准模型
- 【解决方案】VS2013外部工具中添加ildasm.exe
- Mac下安装whistle
- Xcode安装特定版本系统的模拟器(不支持断点下载所以总是下载失败)
- JAVA探针机制—Agent(一)
- 用友ERP U8 其他出入库单据后台记账SQL语句