Mybatis概述(一)

近期抽空阅读了mybatis 3.3.1版本源码,受益匪浅,遂记录一下学习笔记,难免有理解或者写的不恰当的地方,请多谅解。

概述

以下是官方文档的原文。

What is MyBatis?

MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis eliminates almost all of the JDBC code and manual setting of parameters and retrieval of results. MyBatis can use simple XML or Annotations for configuration and map primitives, Map interfaces and Java POJOs (Plain Old Java Objects) to database records.

Mybatis优缺点

优点

  • 易于上手和掌握

  • sql写在xml里,便于统一管理和优化

  • 解除sql与程序代码的耦合

  • 提供映射标签,支持对象与数据库的orm字段关系映射

  • 提供对象关系映射标签,支持对象关系组建维护

  • 提供xml标签,支持编写动态sql

缺点

  • sql工作量很大,尤其是字段多、关联表多时,更是如此。

  • sql依赖于数据库,导致数据库移植性差。

  • 由于xml里标签id必须唯一,导致DAO中方法不支持方法重载。

  • 字段映射标签和对象关系映射标签仅仅是对映射关系的描述,具体实现仍然依赖于sql。(比如配置了一对多Collection标签,如果sql里没有join子表或查询子表的话,查询后返回的对象是不具备对象关系的,即Collection的对象为null)

  • DAO层过于简单,对象组装的工作量较大。

  • 不支持级联更新、级联删除。

  • 编写动态sql时,不方便调试,尤其逻辑复杂时,提供的写动态sql的xml标签功能简单(连struts都比不上),编写动态sql仍然受限,且可读性低。

  • 若不查询主键字段,容易造成查询出的对象有“覆盖”现象。

  • 参数的数据类型支持不完善。(如参数为Date类型时,容易报没有get、set方法,需在参数上加@param)

  • 多参数时,使用不方便,功能不够强大。(目前支持的方法有map、对象、注解@param以及默认采用012索引位的方式)

  • 缓存使用不当,容易产生脏数据。

整体架构

这里写图片描述

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值