zoukankan      html  css  js  c++  java
  • mybatis总结

    总体来说 MyBatis 主要完成两件事情

    根据 JDBC 规范建立与数据库的连接;

    通过Annotaion/XML+JAVA反射技术,实现 Java 对象与关系数据库之间相互转化

    优点:

    1. 易于上手和掌握。

    2. sql写在xml里,便于统一管理和优化。

    3. 解除sql与程序代码的耦合。

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

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

    6. 提供xml标签,支持编写动态sql。

    缺点:

    1. sql工作量很大,尤其是字段多、关联表多时。

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

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

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

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

    6.  不支持级联更新、级联删除。

    7. 编写动态sql时,不方便调试,尤其逻辑复杂时。

    8 提供的写动态sql的xml标签功能简单(连struts都比不上),编写动态sql仍然受限,且可读性低。

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

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

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

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

    总结:

    mybatis的优点其实也是mybatis的缺点,正因为mybatis使用简单,数据的可靠性、完整性的瓶颈便更多依赖于程序员对sql的使用水平上了。sql写在xml里,虽然方便了修改、优化和统一浏览,但可读性很低,调试也非常困难,也非常受限,无法像jdbc那样在代码里根据逻辑实现复杂动态sql拼接。mybatis简单看就是提供了字段映射和对象关系映射的jdbc,省去了数据赋值到对象的步骤而已,除此以外并无太多作为,不要把它想象成hibernate那样强大,简单小巧易用上手,方便浏览修改sql就是它最大的优点了。

  • 相关阅读:
    HAproxy 1.5 dev14 发布
    IBM/DW 使用 Java 测试网络连通性的几种方法
    Skype 4.1 Linux 发布,支持微软帐号登录
    Dorado 7.1.20 发布,Ajax的Web开发平台
    Aspose.Slides for Java 3.0 发布
    开发版本 Wine 1.5.18 发布
    BitNami Rubystack 开始支持 Ruby 2.0
    XWiki 4.3 正式版发布
    Silverlight实例教程 Out of Browser的Debug和Notifications窗口
    Silverlight实例教程 Out of Browser与Office的互操作
  • 原文地址:https://www.cnblogs.com/DreamFather/p/11326870.html
Copyright © 2011-2022 走看看