文章目录

  • 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的关系?相关推荐

  1. mybatis学习笔记(1)-对原生jdbc程序中的问题总结

    2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(1)-对原生jdbc程序中的问题总结 标签:mybatis [TOC] 本文总结jdbc编程的一般步骤 ...

  2. 从JDBC到Mybatis以及IDEA通过mybatis开发Springboot

    文章目录 一.简介 二.问题描述 三.IDEA通过mybatis开发Springboot 3.1 新建工程 3.2 配置相关信息 3.3 项目编写及业务流程 3.4 测试 四.总结 五.参考文献 一. ...

  3. MyBatis - 6.Spring整合MyBatis

    1.查看不同MyBatis版本整合Spring时使用的适配包: http://www.mybatis.org/spring/ 2.下载整合适配包 https://github.com/mybatis/ ...

  4. MyBatis学习总结(1)——MyBatis快速入门

    2019独角兽企业重金招聘Python工程师标准>>> 一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所 ...

  5. MyBatis简介与配置MyBatis+Spring+MySql

    一.MyBatis简介与配置MyBatis+Spring+MySql 原文出自:http://limingnihao.iteye.com/blog/781671 MyBatis学习 之 一.MyBat ...

  6. Mybatis学习第一天——Mybatis的安装配置以及基本CURD操作

    1.Mybatis下载 Mybatis是开源的持久层框架,能够度jdbc进行简单的封装,但其并不是完全的ORM(Object Relational Mapping,对象关系映射),无法脱离数据库进行适 ...

  7. MyBatis源码分析——MyBatis的扩展点(pugins)

    1.MyBatis扩展点plugins mybatis的扩展是通过拦截器Interceptor来实现的,本质上就是JDK的动态代理,所以它只能对接口进行拦截,我们一步步看一下MyBatis是如何将这些 ...

  8. SpringBoot 2.x 整合Mybatis三:tk.mybatis

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/80734057 本文出自[赵彦军的博客] 简介 地址:https://github. ...

  9. mybatis 学习笔记:mybatis 初认识

    简介 MyBatis是一个Java持久层框架,它通过XML描述符或注解把对象与存储过程或SQL语句关联起来.mybatis 可以将 preparedStatement 中的输入参数自动进行映射,将查询 ...

最新文章

  1. 双十一秒杀架构模型设计实践!
  2. ROCK 聚类算法‏
  3. 【Anychat音视频开发】相对路径与绝对路径详解
  4. Django模板渲染——(二)
  5. csi python 摄像头 树莓派_树莓派之摄像头和人脸识别
  6. 滴!你的“十三香”已发货,iPhone 13系列今日正式发售
  7. pandas object格式转float64格式
  8. 机器人开发--编码器
  9. 计算机不联网会有ip地址吗,不联网的电脑有ip地址吗
  10. python 等高线图标注,罗兰贝格图--Python等高线图(平滑处理)
  11. mysql rps和tps区别_并发虚拟用户、RPS、TPS的解读
  12. Oracle ora-12514报错解决方法
  13. 已解决:Win10无法访问Samba共享文件夹
  14. Css中路径data:image/png;base64的用法详解 (转载)
  15. 【论文笔记】CIRNet:基于CycleGAN的无监督循环配准模型
  16. 【解决方案】VS2013外部工具中添加ildasm.exe
  17. Mac下安装whistle
  18. Xcode安装特定版本系统的模拟器(不支持断点下载所以总是下载失败)
  19. JAVA探针机制—Agent(一)
  20. 用友ERP U8 其他出入库单据后台记账SQL语句

热门文章

  1. OSGEARTH3 绘制点线面
  2. AC3 Rematrix
  3. catch捕获主键冲突异常
  4. windows环境下启动snowflake.server
  5. jodd操作html,Jodd HTTP的使用
  6. 酷派品牌重塑,任重而道远
  7. NewCoder 剖分
  8. 汇总Excel日常操作遇到的一些问题
  9. 硕士研究生入学考试报考指南(考研流程)
  10. 4月书单:计算机专业新书5本