mybatis和ibatis的区别

原创 2018年04月17日 14:52:08
1、入参不用封装成对象(或者map集合),可直接使用@Param注解
当Ibatis需要接收超过一个参数时,则需要将多个参数封装成对象,这个时候会产生很多Domain查询类。还有很多同学偷懒,写用hashmap传参,这种方式会彻底丧失代码的优雅性,同时hashmap方式很容易造成bug。
如果你的映射器的方法需要多个参数, 这个注解可以被应用于映射器的方法 参数来给每个参数一个名字。否则,多 参数将会以它们的顺序位置来被命名 (不包括任何 RowBounds 参数) 比如。 #{param1} , #{param2} 等 , 这 是 默 认 的 。 使 用 @Param(“person”),参数应该被命名为 #{person}。
示例:
List<BizDO> queryByDomainCodeAndKey(@Param("bizDomainCode") String bizDomainCode, @Param("status") Integer status, @Param("key") String key, @Param("startIndex") Integer startIndex, @Param("pageSize") Integer pageSize);

2、无需写ResultMap。开启mapUnderscoreToCamelCase配置即可
在ibatis的sql文件中,所有的跟数据库表对应的DataObject类都需要写冗长的映射配置。当数据库表增加了字段时要对这段配置进行同步修改。下划线自动映射到驼峰规则彻底摒弃了这个多余的配置。这个特性同样极大的提高了生产力
是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN 到经典 Java 属性名 aColumn 的类似映射

3、无需写Dao层实现类
在Ibatis中,每个sql的xml文件都有一个namespace,而要调用文件中的sql时需要用namespace + sql id 映射到具体的sql。这样代码里徒增很多字符串常量。
Mybatis实现了DAO接口与xml映射文件的绑定,接口的方法名自动映射到sql的id。不再需要代码里拼接sqlid。
示例:
@Override
public Page getSysUserForPage(Map<String, Object> where) {
return sqlMapDao.queryForPage("sysUser.getSysUserList",where);
}

4、支持Ognl表达式
在Mybatis的If表达式里可以使用Ognl表达式,相对于Ibatis只能使用固定的标签,这个特性太强大了。你可以使用任何第三方框架的方法进行判断。
缺点也在于,Ognl表达式太灵活,不容易驾驭。
<update id="update" parameterType="BizModelDO">
        UPDATE table_name
        <set>
            <if test="!@org.springframework.util.StringUtils@isEmpty(modelName)">model_name= #{modelName},</if>
            <if test="!@org.springframework.util.StringUtils@isEmpty(parentCode)">parent_code = #{parentCode},</if>
            <if test="height != null">height = #{height},</if>
            <if test="number != null">number = #{number},</if>
        </set>
        WHERE model_code = #{modelCode}
    </update>

5.pagehelper,sorthelper等插件的支持
在Ibatis下,每个分页查询都需要写两条SQL,一条查询sql,还有一条统计总数的sql,两个sql几乎一模一样。
在MyBatis下,配置下pagehelper插件,就只需要写一条查询sql。统计的sql会由pagehelper插件来完成。同样提高了生产效率。

Mybatis快速入门

mybatis已是主流持久层框架,目前学习资料和书籍是最少的,本课程针对实际企业应用,进行mybatis技术解析。
  • 2016年10月27日 09:27

mybatis或ibatis中的#和$的区别?

转自:http://weijun726.blog.163.com/blog/static/87342299201362652950398/ 1. #将传入的数据都当成一个字符串,会对自动传入的数据加一...
  • suyu_yuan
  • suyu_yuan
  • 2016-09-19 14:34:42
  • 833

iBatis与MyBatis区别

出于对作者的尊重和感谢,原文地址为 http://www.geek521.com/?p=7861&utm_source=tuicool&utm_medium=referral Batis 框...
  • sosfnima
  • sosfnima
  • 2016-07-22 11:25:25
  • 907

Mybatis与Ibatis的区别

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

mybatis相对于ibatis的优势

2010年,apache的Ibatis框架停止更新,并移交给了google团队,同时更名为MyBatis。从2010年后Ibatis在没更新过,彻底变成了一个孤儿框架。一个没人维护的框架注定被myba...
  • bruce128
  • bruce128
  • 2017-05-14 00:12:00
  • 4240

ibatis与mybatis区别,hibernate、mybatis、JDBC区别

ibatis与mybatis区别? ibatis是mybatis的前身,在2010年7\8月份ibatis所项目移到了google,就将ibatis3.x正式改名为mybatis3.x了。 ...
  • qq_21033663
  • qq_21033663
  • 2015-12-13 10:06:24
  • 8771

myBatis/iBatis常见面试题:#和$的区别

区别 第一: #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是123,那么解析成sql时的值为order by “123”, ...
  • u014359454
  • u014359454
  • 2017-04-18 01:51:38
  • 2014

ibatis与mybatis区别?Hibernate、MyBatis、JDBC区别?

ibatis与mybatis区别? ibatis是mybatis的前身,在2010年7\8月份ibatis所项目移到了google,就将ibatis3.x正式改名为mybatis3.x了。 除此之...
  • sword_anyone
  • sword_anyone
  • 2017-09-05 22:16:35
  • 283

myBatis和ibatis的区别

  • 2012年12月19日 15:25
  • 4KB
  • 下载

mybatis和ibatis的一点区别

1. dao.xml命名空间的区别 mybatis: 命名空间:dao接口的名称         ibatis: 命名空间,自定义的标识,调用的时候:return (List) queryForLis...
  • jueshengtianya
  • jueshengtianya
  • 2015-01-20 14:51:50
  • 1327
收藏助手
不良信息举报
您举报文章:mybatis和ibatis的区别
举报原因:
原因补充:

(最多只允许输入30个字)