DocUpgrade3

这一页提供了一些当你从ibatis迁移到mybatis3时非常有用的信息。不能保证100%的完整。

这个项目现在的地址是 Github https://github.com/mybatis/ibatis2mybatis

转换工具

在下载区有一个可用的工具,可以帮你将iBATIS 2.x sqlmap文件转换为MyBatis 3.x xml mapper文件。

从这里获取 http://mybatis.googlecode.com/files/ibatis2mybatis.zip

该工具是一个封装在Ant任务围绕XSTL转换和一些文字替换,并试图在复杂的工作开始之前提供一个良好的起点。

新的DTDs

新的sqlMapConfig.xml DTD:

<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">

新的sqlMap (*.map.xml) DTD:

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

Configuration配置

Settings配置

在配置的根节点:

<settings x="y" foo="bar"/>

现在是:

<settings><setting name="x" value="y"/><setting name="foo" value="bar"/>
</settings>

然后

<settings useStatementNamespaces="true"/>

这个配置可以删除掉,因为使用命名空间已经是一个强制的特性。

<typeAlias>别名

<typeAlias> 必须从 <sqlMap> 元素移动到 <configuration><typeAliases>这里</typeAliases></configuration>

<configuration><settings>...</settings><typeAliases><typeAlias ... /></typeAliases>
</configuration>

<transactionManager> 和<dataSource>

<transactionManager type="JDBC" commitRequired="false"><dataSource type="your.package.CustomDataSourceFactory" />
</transactionManager>

变成:

<environments default="env"><environment id="env"><transactionManager type="JDBC"><property name="commitRequired" value="false"/></transactionManager><dataSource type="your.package.CustomDataSourceFactory" /></environment>
</environments>

<sqlMap>

<sqlMap resource=... />
<sqlMap resource=... />
<sqlMap resource=... />

变成:

<mappers><mapper resource=... />
</mappers>

Mapping

<resultMap id="productRM" class="product" groupBy="id"><result property="id" column="product_id"/><result property="name" column="product_name"/><result property="category" column="product_category"/><result property="subProducts" resultMap="Products.subProductsRM"/>
</resultMap>

新的:

<resultMap id="productRM" type="product" ><id property="id" column="product "/><result property="name " column="product_name "/><result property="category " column="product_category "/><collection property="subProducts" resultMap="Products.subProductsRM"/>
</resultMap>

Nested resultMaps嵌套的resultMaps

现在需要使用<association> 标签指定.

<resultMap ...><result property="client" resultMap="Client.clientRM"/>...
</resultMap>

需要改成:

<resultMap ...><association property="client" resultMap="Client.clientRM"/>...
</resultMap>

<parameterMap>

虽然这个标签被废弃了,但是他仍然可以在iBatis 2中使用。但是对3.0.3以上版本当使用type="map"时有一个bug,并不指定 javaType 参数。这将导致:

There is no getter for property named '...' in 'interface java.util.Map'

这将会在MyBatis 3.0.4中解决,对3.0.3版本或更早的版本解决的方法是显示的指定javaType

Inline parameters内联参数

#value#

需要改成:

#{value}

jdbcType changes jdbcType变化

jdbcType="ORACLECURSOR"

需要改成:

jdbcType="CURSOR"

还有

jdbcType="NUMBER"

需要改成:

jdbcType="NUMERIC"

Stored procedures存储过程

<procedure id="getValues" parameterMap="getValuesPM">{ ? = call pkgExample.getValues(p_id => ?) }
</procedure>

需要改成:

<select id="getValues" parameterMap="getValuesPM" statementType="CALLABLE">{ ? = call pkgExample.getValues(p_id => ?)}
</select>

如果你调用一个insert的带返回值的存储过程,你可以使用<select>标签代替<insert>,但是你需要设置specifyuseCache="false" 和flushCache="true",你还必须做一个强制提交(事务)。

Caching缓存

<cacheModel id="myCache" type="LRU"><flushInterval hours="24"/><property name="size" value="100" />
</cacheModel>

需要改为:

<cache flushInterval="86400000" eviction="LRU"/>

注意:你可以忽略eviction="LRU",因为他是默认值。.

Dynamic SQL动态SQL

在我的项目中最常用的的动态SQL是isNotNull. 下面是替换正则表达式的示例:

正则表达式:

<isNotNull.*?property=\"(.*?)\">
</isNotNull>

需要改为:

<if test="$1 != null">
</if>

isEqual最常用,你可以使用类似的<if> 标签替代.

Java code

SqlMapClient

Custom type handler

Custom data source factory

旧的接口:

com.ibatis.sqlmap.engine.datasource.DataSourceFactory

新的接口:

org.apache.ibatis.datasource.DataSourceFactory

替换下面的方法

public void initialize(Map properties)

为:

public void setProperties(Properties props)

原文地址:https://code.google.com/p/mybatis/wiki/DocUpgrade3

from: http://blog.csdn.net/isea533/article/details/41517531

ibatis迁移到mybatis3相关推荐

  1. ibatis的isequal_isequal ibatis

    iBATIS 高级特性 1.主要内容 .关联对象 事务 延迟加载 缓存 动态标签 读写 ... Property 属性与 compareProperty 或 pareValye 属性值作比较,看是否. ...

  2. 遗留系统的技术栈迁移

    什么是遗留系统(Legacy System)?根据维基百科的定义,遗留系统是一种旧的方法.旧的技术.旧的计算机系统或应用程序[1].这一定义事实上并没有很好地揭露遗留系统的本质.我认为,遗留系统首先是 ...

  3. ORM框架之Mybatis(五)mybatis生成器配置文件说明以及生成的类的说明

    一.XML配置详解 1.1 mybatis generator配置文件约束 <?xml version="1.0" encoding="UTF-8"?&g ...

  4. 单元测试日期使用ibatis将数据库从oracle迁移到mysql的几个修改点

    上班之余抽点时间出来写写博文,希望对新接触的朋友有帮助.今天在这里和大家一起学习一下单元测试日期 我们目项在公司的大战略下要需从oracle迁徙到mysql,我们的目项应用的是ibatis,在ibat ...

  5. 学习MyBatis3这一篇就够了

    目录 第一章 MyBatis3概述 1.1.概述 1.2.特点 1.3.对比 1.4.官网 1.5.下载 第二章 MyBatis3的增删改查 2.1.环境准备 2.2.创建工程 2.3.导入依赖 2. ...

  6. MyBatis实战——前身iBatis、基础环境搭建和如何钓鱼

    (一)前身iBatis 网上发现MyBatis书很少,因为旧项目用到的是ibatis,所以先大致过了iBatis,因为太老,所以基本上讲解的东西好少,但是还有<iBatis实战>这本书,再 ...

  7. 【转】ibatis的简介与初步搭建应用

    [转]ibatis的简介与初步搭建应用 一.ibatis的简介 ibatis是什么东西就不介绍了,自己去找谷老师. 这里讲下自己的使用体会.之前自己学过Hibernate,是看尚学堂的视频教学的,看完 ...

  8. Spring3.2.8+Mybatis3.2.6 多数据源基于BaseDAO的配置

    Spring3.2.8+Mybatis3.2.6 多数据源基于BaseDAO的配置 配置数据源为: MySQL5.5.6 H2Database 1.3.75 这个配置起来比较麻烦,本文这种方法有点麻烦 ...

  9. 在Mybatis3开发中与配置相关的7点体会

    Mybatis3前身是Apche开源项目ibatis,后前移至google code改名为Mybatis,mybatis是Java持久化框架,关于Mybatis学习难度不大,熟悉JDBC编程的话,相信 ...

最新文章

  1. JavaScript 输出
  2. Excel 设定密码保护特定的内容
  3. 常见开发需求之前端利器webstorm中的git和快捷键
  4. android 按比例缩放,Android postScale不按比例缩放
  5. MySQL基础课堂笔记
  6. physx选择显卡还是cpu_预算有限,该侧重CPU还是显卡?中高端游戏主机这样配
  7. java连接mysql数据库C3P0入门
  8. python - 日期处理模块
  9. SAP编辑器ABAP代码添加模板
  10. iOS开发之CoreSpotlight框架的应用
  11. Visual Studio 开发环境安装与配置
  12. 券商结算VS托管行结算
  13. 谷歌浏览器截取长屏幕(全屏截图)
  14. IOC注入框架——Unity中的BuildUp与LifetimeManagers
  15. 电影《海贼王:红发歌姬》观后感
  16. ccs 动态梦幻西游
  17. php获取客户端ip端口,Phpwind获取用户真实IP
  18. ITU标准介绍及下载索引
  19. 使用tensorflow构建一个卷积神经网络
  20. CUDA Programming Model--CUDA编程模型

热门文章

  1. Java 授权内幕--转载
  2. NMAP - A Stealth Port Scanner--reference
  3. 【数据分析】理解数据分析
  4. 微软新冠: 数据分析网站 COVID Insights
  5. 记一次Spring boot 和Vue的前后端分离的入门培训
  6. 成为优秀高级程序员的10个要点
  7. 传统企业向产业互联网转型的两条路径
  8. jvm性能调优 - 18白话G1垃圾回收器的工作原理
  9. 白话Elasticsearch49-深入聚合数据分析之 Percentile Ranks Aggregation-percentiles rank以及网站访问时延SLA统计
  10. Spring-注入参数详解-[通过util命名空间简化集合类型的配置]