Ibatis 是 Mybatis 的前身,两者都是优秀的持久层框架。

区别:

1、mybatis 实现接口绑定,不需要具体接口实现类。但是需要在xml文件中 的 namespace 绑定具体的接口。

这个实现原理是JDK的动态代理,原理会在下一篇博客更新。

@Component
public interface XXXDAO extends BaseDAO<XXXDO, Long> {
}
<mapper namespace="com.xxx.dao.XXXDAO" >
</mapper>

ibatis 需要定义具体接口的实现,并且在接口实现中获取SqlMapClient以及绑定xml文件。

<sqlMap namespace="namespace名称" >
</sqlMap>
public class XXXDAOImpl extends SqlMapClientDaoSupport implements XXXDAO {

    @Override
public Long insert(XXX xxx) throws DataAccessException {
Object id = getSqlMapClientTemplate().insert("namespace名称.语句id", xxx);
return (Long) id;
}

2、XML文件不同

1)mybatis用的是<mappers> 标签,ibatis 是用 <sqlMap> 标签

2)mybatis 支持 ognl 表达式,ibatis不支持

3)mybatis 接收参数的方式 #{id} ${id}$ ,ibatis 是 #id# $id$

ps: #与$ 的区别是# 是作为参数传递,预编译使用

$ 是作为sql 一部分拼接,会有sql注入的风险

4)mybatis 参数类型是 parameterType,ibatis 参数类型是parameterClass

5)动态语句写法不同

mybatis

<update id="updateByPrimaryKeySelective" parameterType="xxxDO" >
update xxx
<set >
<if test="activityWarmupSwitch != null" >
activity_warmup_switch = #{activityWarmupSwitch,jdbcType=CHAR},
</if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>

ibatis

<update id="updateCommentById" parameterClass="xxxDO" >
UPDATE xxx
<dynamic prepend="SET" >
<isNotNull property="fuId" prepend="," >
<![CDATA[
fu_id = #fuId#
]]>
</isNotNull>
</dynamic>
WHERE id = #id#
</update>

6)mybatis 迭代用的是 foreach ,ibatis用的是iterator

MyBatis 与Ibatis 区别的更多相关文章

  1. mybatis和ibatis区别

     ibatis本是apache的一个开源项目,2010年这个项目由apache software foundation 迁移到了google code,并且改名为mybatis.  1.Mybat ...

  2. Mybatis与Ibatis的区别

    Mybatis与Ibatis的区别: 1.Mybatis实现了接口绑定,使用更加方便 在ibatis2.x中我们需要在DAO的实现类中指定具体对应哪个xml映射文件, 而Mybatis实现了DAO接口 ...

  3. mybatis、ibatis 和spring集成

    mybatis是ibatis的升级版,spring也有自带mybatis的orm.所以,搭建ibatis的框架也会有多种方式(我这里mybatis是3.0的,ibatis是2.3的,spring是3. ...

  4. hibernate和mybatis思想,区别,优缺点

    Hibernate 简介 Hibernate对数据库结构提供了较为完整的封装,Hibernate的O/R Mapping实现了POJO 和数据库表之间的映射,以及SQL 的自动生成和执行.程序员往往只 ...

  5. mybatis 参数为list时,校验list是否为空, mybatis ${}与#{}的区别,Mybatis sql in

    1.mybatis 参数为list时,校验list是否为空 2. mybatis ${}与#{}的区别 简单来说#{} 解析的是占位符?可以防止SQL注入, 比如打印出来的语句 select * fr ...

  6. 旧调重弹Hibernate与Ibatis区别——深入架构设计

    对于一个粗学者而言一言概况就是:ibatis非常简单易学,hibernate相对较复杂,门槛较高.  但是,hibernate对数据库结构提供了较为完整的封装,hibernate的o/r mappin ...

  7. mybatis 参数为list时,校验list是否为空, mybatis ${}与#{}的区别

    一.参数list时,先判断是否为空,否则会报错. 二.mybatis ${}与#{}的区别 简单来说#{} 解析的是占位符?可以防止SQL注入, 比如打印出来的语句 select * from tab ...

  8. MySQL 和 Oracle 在 MyBatis 使用中的区别

    MySQL 和 Oracle 在 MyBatis 使用中的区别: 区别 MySQL Oracle 存储过程的参数模式 mode 为 IN 时,是否需要指定 jdbcType 不需要:MyBatis 为 ...

  9. 3. mybatis # 与 $ 的区别

    mybatis # 与 $ 的区别 1.# % 号必须写在test中 应用场景:模糊查询 配置文档mapper.xml <select id="selectBlogByTitle&qu ...

随机推荐

  1. Selenium的简单使用

    selenium的使用对于新手来说十分友好,因为他避开了如今网络中的异步加载抓取的困扰,使得我们大部分的时间可以用于提取信息和存储中,下面就简单的列一些使用的代码,希望给同样初学的你有一定的参考价值. ...

  2. 一起来学习XPATH,来看看除了正则表达式我们还能怎么抓取数据

    参考学习的网站链接http://www.w3school.com.cn/xpath/xpath_intro.asp 首先理清楚一些常识 以此为例 <?xml version="1.0& ...

  3. Django 连接mysql 踩过的坑

    1.创建数据库 2.在Django项目文件下的settings.py配置数据库 3.在Django项目__init__.py文件中,用pymysql代替MySqlDB import pymysql p ...

  4. CCPC-wannafly Camp Day2 讲课内容总结(杜瑜皓-数据结构)

    ·栈.单调栈 1.栈的特点与基本操作 2.单调栈 单调栈是一种特殊的栈,其栈内的元素都保持一个单调性(单调递增或者递减). ·单调递增栈,从栈底到栈顶依次递增(单调非递减栈:允许有相等) ·单调递减栈 ...

  5. 高通量计算框架HTCondor(五)——分布计算

    目录 1. 正文 1.1. 任务描述文件 1.2. 提交任务 1.3. 返回结果 2. 相关 1. 正文 1.1. 任务描述文件 前文提到过,HTCondor是通过condor_submit命令将提交 ...

  6. 20191211 HNOI2017 模拟赛 问题A

    题目: 分析: 好难好难... 下来听神仙讲.. 每一个长度为n-2的prufer序列一一对应一棵大小为n的树... 每个点在序列中的出现次数为该点的度数减一 哦??? ... 哦... prufer ...

  7. 在ubuntu18.04下搭建kvm

    前一段时间一直在尝试Ubuntu上搭建xen,一直出现各种问题,各种坑 首先先感谢下面这个公司对我的耐心解答,非常感谢.特别是后面来的电话对我进行了详细的解答,所以选择搭建kvm. 1. 需要检查一下 ...

  8. 如何理解 HTMLTestRunner 中 test (result)?UnitTest是如何运行的?

    我们在用Unittest框架时,生成html格式的报告一般都是用HTMLTestRunner.py这个第三方库,大概使用方法如下: with open(config.report_file, 'wb' ...

  9. B语言的发明者 Ken Thomson & C语言的发明者Dennis Ritchie

    C语言的发明者Ken Thomson因为没有参加C语言考试,在Google没有提交代码的权力. 哀悼结束,生活还要继续. 说段趣闻吧.大家都知道,C语言和Unix的发明者.图灵奖得主.最具传奇性的程序 ...

  10. Prometheus学习笔记之教程推荐

    最近学习K8S和基于容器的监控,发现了如下的教程质量不错,记录下来以备参考 K8S最佳实战(包括了K8S的Prometheus监控和EFK日志搜集) https://jimmysong.io/kube ...