ibatis迁移到mybatis3的注意事项

下面是ibatis迁移到mybatis3的注意事项的完整攻略:

1. 概览

iBATIS作为一个成熟的ORM框架,已经成为本质上与 MyBatis 这个极受欢迎的 ORM 框架的母版。iBATIS 的成功导致了 MyBatis 的产生,MyBatis 与 iBATIS 必然有很多相似之处,包括映射文件、参数映射、参数验证等等。iBATIS 迁移到 MyBatis3 的过程似乎要比起独立使用 MyBatis3 更加困难,但从功能上来讲,成果却是值得的。下面我会提到某些明显的不同之处和步骤。

2. 重写iBATIS项目

为了将 iBATIS 项目移动到 MyBatis3,你自然需要对你已经编写的程序进行一些改动。以下是一些需要注意的关键点。

  • 对于大多数的简单查询,直接使用 MyBatis3 的简单方法:selectOne、selectList 和 selectMap。
  • 对于下拉列表框等选择字段,使用 MyBatis3 的 EnumTypeHandler,你需要适当地使用预处理。
  • 在 SQL 中需要转义或者是通过 XML 将 SQL 片段引入中时,比起 iBATIS, MyBatis3 要更严格。为此,你需要将 XML 片段包含在 CDATA 节点中。
  • 如果你需要使用复杂的 SQL,你需要使用 MyBatis3 的动态 SQL 功能。

3. 更改映射文件

MyBatis3 和 iBATIS 的映射文件结构差不多,但是 MyBatis3 支持更多的功能和特点。下面是 MyBatis3 的映射文件的特点:

  • insert、select、update 和 delete 元素中必须有 id 属性。
  • MyBatis3 的 SQL 语句是通过预编译 Statement 实现的。因此,在 SQL 语句和参数之间使用 #{},处理两个冒号(:)进行统治。
  • MyBatis3的映射文件不支持com.ibatis.sqlmap.engine.mapping.statement.CachingStatement 将结果存储在缓存中。取而代之的是cache 元素。

下面的例子展示了iBATIS语句如何转换为MyBatis3语句:

以前的代码:

    <select id="selectPersonById" parameterClass="java.lang.Integer"
        resultClass="test.ibatis.Person">
      SELECT * FROM person WHERE id = ?;
    </select>

更新后的代码:

    <select id="selectPersonById" parameterType="java.lang.Integer"
        resultType="test.ibatis.Person">
      SELECT * FROM person WHERE id = #{id};
    </select>

4. 迁移DAO实现

MyBatis3 和 iBATIS 的 DAO 接口是一致的。但是,使用 MyBatis3 时,你需要将方法头改为与 MyBatis 3 相适合的头。例如,对于 Java 8 Lambda,你可以使用 @MapKey 和 @Param 注释。

下面的例子展示了 iBATIS DAO 方法的转换:

以前的代码:

public void insertPerson(Person person) throws Exception {
    sqlMapClient.insert("insertPerson", person);
}

更新后的代码:

@Insert("INSERT INTO person(id,name) VALUES (#{id},#{name})")
void insertPerson(@Param("id") Integer id,
    @Param("name") String name);

5. 写下感想

通过这篇攻略,我们学习了迁移 iBATIS 项目到 MyBatis3 的重要任务。需要注意的一些关键点和步骤都已经在上文中介绍到了。不过,实际上这项工作还需要很多有经验的开发工程师来完成,所以我们希望这篇攻略的贡献能够为他们提供很好的帮助,为希望学习 iBATIS 和 MyBatis3 的其他全栈开发工程师提供至少基础知识。

我希望这篇文章能帮助你迁移 iBATIS 项目到 MyBatis3。如果你有疑问或者其他方面的建议,请在评论区留下你们的 suggestion。

阅读剩余 39%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ibatis迁移到mybatis3的注意事项 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • JS+JSP通过img标签调用实现静态页面访问次数统计的方法

    使用JS+JSP通过img标签调用实现静态页面访问次数统计的方法,大致分为以下几个步骤: 创建一个动态生成图片的JSP程序,该程序用来统计访问次数并返回一张透明的1×1像素的PNG图片。 <%@ page language="java" contentType="image/png; charset=UTF-8"…

    Java 2023年6月15日
    00
  • Spring框架事务属性中事务隔离级别与传播行为全面讲解

    Spring框架事务属性中事务隔离级别与传播行为全面讲解 Spring框架提供了丰富的事务管理机制,其中包括事务隔离级别和事务传播行为。本文将详细介绍它们的操作方式以及应用场景。 事务隔离级别 在数据库中,同一时间段内可能有多个会话并发地访问数据库,这时候就需要保证数据的正确性和一致性。传统的数据库并发控制有两种方式:悲观锁和乐观锁。悲观锁会在每次操作前将数…

    Java 2023年5月19日
    00
  • 骑马与砍杀2beta版更新哪些内容 5月15日beta版更新内容介绍

    骑马与砍杀2beta版更新哪些内容 骑马与砍杀2(Mount & Blade II: Bannerlord)的beta版近期进行了一次更新,更新的内容包括以下: 新增内容 英雄可以学习新的技能,并升级他们现有的技能。 为一些城市和村庄增加了场所。 增加了新的任务类型和子任务。 加入了新的装备、武器和盔甲。 增加了新的动画效果和音效。 修复问题 修复了…

    Java 2023年6月15日
    00
  • Spring Data JPA映射自定义实体类操作

    下面我将详细讲解“Spring Data JPA映射自定义实体类操作”的完整攻略。 前言 Spring Data JPA 是 Spring 框架中对于数据访问操作的一种规范组件,为使用 JPA 提供了更加便利的方式,而 Spring Data JPA本身也引入了很多适合常用场景下的默认特性和方法,非常适合开发人员进行快速开发和构建。 不过,在开发中有时候我们…

    Java 2023年5月20日
    00
  • Spring远程调用HttpClient/RestTemplate的方法

    Spring远程调用HttpClient/RestTemplate的方法 HttpClient 首先需要导入相关依赖,可以使用maven,在pom.xml文件中添加以下依赖: <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId&g…

    Java 2023年5月19日
    00
  • 2020最新版Spring面试题

    2020最新版Spring面试题完整攻略 引言 Spring是目前Java应用开发领域中应用最广泛的框架之一,也是许多企业在招聘时必备的技能之一。因此,作为Java开发者,掌握Spring是非常重要的。 本文将帮助读者全面了解2020年最新版的Spring面试题,同时提供答题技巧和示例解答,帮助读者更好的备战面试。 Spring面试题分类 Spring面试题…

    Java 2023年5月19日
    00
  • web.xml SpringBoot打包可执行Jar运行SpringMVC加载流程

    web.xml SpringBoot打包可执行Jar运行SpringMVC加载流程 在 SpringBoot 中,我们可以使用可执行 Jar 包来运行我们的应用程序。本文将详细讲解如何使用 web.xml 文件来配置 SpringMVC,并将其打包为可执行 Jar 包。 1. 创建 SpringBoot 项目 首先,我们需要创建一个 SpringBoot 项…

    Java 2023年5月18日
    00
  • Java基本类型和运算符(面试题)

    下面我将详细讲解一下“Java基本类型和运算符(面试题)”的完整攻略。 Java基本类型 Java基本类型共有8种,分别为:byte、short、int、long、float、double、char、boolean,其对应的基本类型在内存中占用的空间及范围不同。具体的描述如下表所示: 类型 字节数 取值范围 byte 1 -128到+127 short 2 …

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部