博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mybatis与Ibatis
阅读量:3889 次
发布时间:2019-05-23

本文共 1032 字,大约阅读时间需要 3 分钟。

前言:

      随着开发团队转投Google Code旗下,ibatis3.x正式更名为Mybatis 

1、Mybatis实现了接口绑定,使用更加方便。 
     在ibatis2.x中我们需要在DAO的实现类中指定具体对应哪个xml映射文件, 
     而Mybatis实现了DAO接口与xml映射文件的绑定,自动为我们生成接口的具体实现,使用起来变得更加省事和方便。 
这可以说是Mybatis最重要的改进。 
注意: 
    虽然Mybatis支持在接口中直接使用annotation的配置方式来简化配置, 不过强烈建议仍然使用xml配置的方式。毕竟annotation的配置方式功能有限且代码入侵性太强。使用xml配置方式才能体现出Mybatis的优势所在 。
2、对象关系映射的改进,效率更高 
     相信很多在使用ibatis2.x的朋友并没有通过ibatis的xml映射文件来实现对象间的关系映射。其实也确实没有必要那么做,因为ibatis2.x采用的是“嵌套查询”的方式将对象之间的关系通过查询语句的直接拼装来实现,其效果和在DAO或Service中自行封装是一样的。 
不过这种方式存在“N+1查询问题”。 概括地讲,N+1查询问题可以是这样引起的: 
     你执行了一个单独的SQL语句来获取结果列表(就是+1)。 
     对返回的每条记录,你执行了一个查询语句来为每个加载细节(就是N)。 
这个问题会导致成百上千的SQL语句被执行。这通常不是期望的。 
      而在Mybatis中,除了兼容ibatis2.x中的“嵌套查询”方式外,还提供了直接“嵌套结果”的方式,其效果相当于直接通过一句sql将查询出的dto对象自动封装成所需的对象。 
     不过实际上这一改进所带来的好处也是很有限的。因为这一方式在使用分页的时候并不起作用,或者说嵌套对象的结果集是不允许进行分页的。这一点在Mybatis框架中已经做出了明确的限制,而实际项目中需要分页的情况又特别多…… 
3、MyBatis采用功能强大的基于OGNL的表达式来消除其他元素。 
MyBatis采用OGNL表达式简化了配置文件的复杂性,使用起来更简洁。

4、总结一下:

Mybatis比IBatis比较大的几个改进是什么

a.有接口绑定,包括注解绑定sql和xml绑定Sql ,

b.动态sql由原来的节点配置变成OGNL表达式,

c. 在一对一,一对多的时候引进了association,在一对多的时候引入了collection节点,不过都是在resultMap里面配置

转载地址:http://ltphn.baihongyu.com/

你可能感兴趣的文章
使用Ubuntu搭建Web服务器
查看>>
MySQL数据库基本操作
查看>>
Docker简单使用教程
查看>>
Doc
查看>>
[网鼎杯 2020 朱雀组]Nmap
查看>>
[极客大挑战 2019]FinalSQL
查看>>
[NCTF2019]True XML cookbook
查看>>
[CISCN2019 华北赛区 Day1 Web2]ikun
查看>>
[BJDCTF2020]EasySearch
查看>>
[BJDCTF 2nd]xss之光
查看>>
Thinkphp5 任意代码执行漏洞复现
查看>>
[ThinkPHP]5.0.23-Rce 漏洞复现
查看>>
[ThinkPHP]2-Rce 复现
查看>>
phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613)漏洞复现
查看>>
[struts2]s2-013 漏洞复现
查看>>
[struts2]s2-001
查看>>
一道题讲懂SQL盲注 / [第一章 web入门]SQL注入-2
查看>>
ubuntu server搭建python+selenium
查看>>
easy_sql
查看>>
班委考评怎么玩?
查看>>