热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

javaibatismybatis_java相关:ibatis迁移到mybatis3的注意事项

java相关:ibatis迁移到mybatis3的注意事项发布于2020-8-14|复制链接摘记:DocUpgrade3这一页提供了一些当你从ibatis迁移到myb

java相关:ibatis迁移到mybatis3的注意事项

发布于 2020-8-14|

复制链接

摘记: DocUpgrade3 这一页提供了一些当你从ibatis迁移到mybatis3时非常有用的信息。不能保证100%的完整。这个项目现在的地址是 Github  ..

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:

```java

```

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

```java

```

Configuration配置配置根节点从  变成 Settings配置在配置的根节点:

```java

```

现在是:

```java

```

然后

```java

```

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

```java

别名

必须从 元素移动到 这里

...

```

变成:

```java

```

变成:

```java

```

Mapping根元素从  变成 parameterClass属性必须改成parameterTyperesultClass属性必须改成resultTypeclass属性必须改成typecolumnIndex不在 标签中使用groupBy属性已经被废弃。下面是一个 2.x sqlMap的groupBy 例子:

```java

```

新的:

```java

```

Nested resultMaps嵌套的resultMaps现在需要使用 标签指定.

```java

...

```

需要改成:

```java

...

```

虽然这个标签被废弃了,但是他仍然可以在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

```bash

Inline parameters内联参数

#value#

```

需要改成:

```bash

#{value}

jdbcType changes jdbcType变化

jdbcType="ORACLECURSOR"

```

需要改成:

jdbcType="CURSOR"

还有

jdbcType="NUMBER"

需要改成:

```bash

jdbcType="NUMERIC"

Stored procedures存储过程

 存储过程的标签已经不存在了,需要使用 , 或 标签。

{ ? = call pkgExample.getValues(p_id => ?) }

```

需要改成:

```bash

{ ? = call pkgExample.getValues(p_id => ?)}

```

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

对返回数据集的存储过程,当使用嵌套的resultMap时,这儿有一个bug  (例如:出参resultMap包含一个 标签). 只要问题没有解决,你必须自己将resultMap定义好,或者嵌套的内容不会被填充。

Caching缓存

```bash

```

需要改为:

```bash

```

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

 标签被flushCache属性所替代。缓存默认会被所有的查询语句使用。

Dynamic SQL动态SQL

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

正则表达式:

```java

```

需要改为:

```bash

```

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

SqlMapClient

这个类已经不存在了,使用SqlSessionFactory替代 (详细内容看Mybatis文档).

Custom type handler

用 TypeHandler 替换接口 TypeHandlerCallback。它具有稍有不同,但方法类似。

Custom data source factory

旧的接口:

com.ibatis.sqlmap.engine.datasource.DataSourceFactory

新的接口:

org.apache.ibatis.datasource.DataSourceFactory

替换下面的方法

public void initialize(Map properties)

为:



推荐阅读
  • 本文将详细介绍如何配置并整合MVP架构、Retrofit网络请求库、Dagger2依赖注入框架以及RxAndroid响应式编程库,构建高效、模块化的Android应用。 ... [详细]
  • 本文介绍了如何通过创建自定义 XML 文件来修改 Android 中 Spinner 的项样式,包括颜色和大小的调整。 ... [详细]
  • 在Linux系统中使用EncFS实现文件夹加密
    为了保护个人隐私或敏感数据不被未经授权的访问,可以通过加密技术来增强安全性。本文介绍如何在Linux系统上使用EncFS工具创建和管理加密文件夹,以确保即使在系统登录状态下,特定文件夹中的数据也保持加密状态。 ... [详细]
  • 本文详细介绍了在MyBatis框架中如何通过#和$两种方式来传递SQL查询参数。使用#方式可以提高执行效率,而使用$则有助于在复杂SQL语句中更好地查看日志。此外,文章还探讨了不同场景下的参数传递方法,包括实体对象、基本数据类型以及混合参数的使用。 ... [详细]
  • java datarow_DataSet  DataTable DataRow 深入浅出
    本篇文章适合有一定的基础的人去查看,最好学习过一定net编程基础在来查看此文章。1.概念DataSet是ADO.NET的中心概念。可以把DataSet当成内存中的数据 ... [详细]
  • 本文详细介绍了Socket在Linux内核中的实现机制,包括基本的Socket结构、协议操作集以及不同协议下的具体实现。通过这些内容,读者可以更好地理解Socket的工作原理。 ... [详细]
  • 本文介绍了一种在 Android 开发中动态修改 strings.xml 文件中字符串值的有效方法。通过使用占位符,开发者可以在运行时根据需要填充具体的值,从而提高应用的灵活性和可维护性。 ... [详细]
  • 如何使用Maven将依赖插件一并打包进JAR文件
    本文详细介绍了在使用Maven构建项目时,如何将所需的依赖插件一同打包进最终的JAR文件中,以避免手动部署依赖库的麻烦。 ... [详细]
  • Hadoop MapReduce 实战案例:手机流量使用统计分析
    本文通过一个具体的Hadoop MapReduce案例,详细介绍了如何利用MapReduce框架来统计和分析手机用户的流量使用情况,包括上行和下行流量的计算以及总流量的汇总。 ... [详细]
  • 在使用mybatis进行mapper.xml测试的时候发生必须为元素类型“mapper”声明属性“namespace”的错误项目目录结构UserMapper和UserMappe ... [详细]
  • 本文探讨了如何利用 Android 的 Movie 类来展示 GIF 动画,并详细介绍了调整 GIF 尺寸以适应不同布局的方法。同时,提供了相关的代码示例和注意事项。 ... [详细]
  • 一、使用Microsoft.Office.Interop.Excel.DLL需要安装Office代码如下:2publicstaticboolExportExcel(S ... [详细]
  • Gradle 是 Android Studio 中默认的构建工具,了解其基本配置对于开发效率的提升至关重要。本文将详细介绍如何在 Gradle 中定义和使用共享变量,以确保项目的一致性和可维护性。 ... [详细]
  • 本文详细介绍如何在SSM(Spring + Spring MVC + MyBatis)框架中实现分页功能。包括分页的基本概念、数据准备、前端分页栏的设计与实现、后端分页逻辑的编写以及最终的测试步骤。 ... [详细]
  • 本文详细介绍了在PHP中如何获取和处理HTTP头部信息,包括通过cURL获取请求头信息、使用header函数发送响应头以及获取客户端HTTP头部的方法。同时,还探讨了PHP中$_SERVER变量的使用,以获取客户端和服务器的相关信息。 ... [详细]
author-avatar
蛋蛋小可爱的诱惑_360
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有