Ibatis与Mybatis的区别—侧重于Ibatis

article/2025/9/13 8:39:22

目录

一、什么是Ibatis?

1、iBatis是一款轻量级的持久化框架

2、iBatis最大的特点是将SQL语句与Java代码分离

3、iBatis具有以下几个关键组成部分:

二、Ibatis与Mybatis的区别

1、基本信息不同

2、开发时间不同

3、配置方法不同

三、Ibatis与Mybatis的优缺点(根据以上所说做一个总结)

1、iBatis的优点:

        1.1XML映射

        1.2灵活性

        1.3可以手工调整SQL

        1.4数据访问

2、iBatis的缺点:

        2.1学习曲线较陡峭

        2.2缺乏自动化

3、MyBatis的优点:

        3.1简洁和易于阅读

        3.2映射

        3.3设计上的优点

        3.4移植性

4、MyBatis的缺点:

       4.1对初学者不太友好

        4.2可读性问题

        4.3SQL注入问题


一、什么是Ibatis?

1、iBatis是一款轻量级的持久化框架

        实现了Java程序与关系型数据库的绑定。它可以用来简化数据库访问的开发工作,并且能够有效地避免SQL注入等问题,也提高了程序的可维护性和可扩展性。iBatis最初由Apache开发,后来被Google收购并改名为MyBatis。

2、iBatis最大的特点是将SQL语句与Java代码分离

        即通过使用XML映射器将SQL语句与Java代码分离,使得维护和追踪SQL语句变得更加轻松。在iBatis中,您可以使用XML定义SQL查询,并将结果映射到Java对象中。iBatis能够根据需要生成SQL语句,并将生成的SQL语句与查询参数一起发送到数据库中执行。此外,iBatis还提供了事务管理和连接池管理等特性

3、iBatis具有以下几个关键组成部分:

  1. 数据源:数据库连接可以一次性设置,以避免每次访问数据库时创建连接。数据源可以使用基本数据源、连接池数据源等

  2. SqlMapConfig.xml:此文件管理数据库连接、事务、映射器等配置。该文件中也定义了到数据库的连接

  3. 映射器:提供了一种将Java对象映射到数据库表中的机制。

  4. SqlSession:充当持久化操作的工厂,在iBatis中我们使用SqlSession来执行数据库操作

总的来说,iBatis为我们提供了一种非常灵活和方便的方式来处理数据库访问。通过XML映射器我们只需要定义SQL语句和参数即可,而不需要考虑这些SQL都应该在代码中编写,这可以让我们将精力放在业务逻辑上,而不需要花费大量的时间处理数据库操作及SQL语法的问题。

二、Ibatis与Mybatis的区别

1、基本信息不同

mybatis   MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集

MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。

ibatis  :iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO),同时还提供一个利用这个框架开发的JPetStore实例。相对Hibernate和ApacheOJB等“一站式”ORM解决方案而言,ibatis 是一种“半自动化”的ORM实现。

iBATIS 目前提供了三种语言实现的版本,包括:Java、.NET以及Ruby

2、开发时间不同

mybatis:MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。

ibatis:iBATIS一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在2001年发起的开放源代码项目。

3、配置方法不同

mybatis简化了编码的过程,不需要去写dao的实现类,直接写一个dao的接口,再写一个xml配置文件,整个mybatis就配置好了,也就是数据库就连接好了,然后在service里面直接调用dao就可以了,但是ibatis则不可以,必须要写dao的实现类。mybatis是ibatis的升级版本

三、Ibatis与Mybatis的优缺点(根据以上所说做一个总结)

iBatis与MyBatis两者都是优秀的持久层框架(提了多遍,应该也记住啦!),它们各自都有一些优点和缺点。下面是它们的具体优缺点:

1、iBatis的优点:

        1.1XML映射

它允许用户通过映射器文件定义SQL语句和参数,所以iBatis不会将SQL语句和Java代码混合在一起,从而帮助开发人员轻松创建和维护数据操作

        1.2灵活性

用户可以映射任何表或视图,以及为任何查询选择使用任何SQL语句。这也使得iBatis对于复杂的查询和多表连接等非常适合。

        1.3可以手工调整SQL

iBatis允许开发人员手动调整生成的SQL语句,使开发人员可以对插件进行高级自定义以获得与ORM和JDBC相对更高的性能

        1.4数据访问

iBatis直接通过JDBC来操作数据库,因此性能较好。

2、iBatis的缺点:

        2.1学习曲线较陡峭

为了学习使用iBatis,开发人员需要了解XML和SQL语法以及SQL映射器

        2.2缺乏自动化

iBatis中缺少自动生成代码和自动化映射的功能,这会花费更多的时间来维护映射器。

3、MyBatis的优点:

        3.1简洁和易于阅读

MyBatis提供了一种比iBatis更简单的方式来定义SQL查询,这对于开发人员更容易理解。

        3.2映射

MyBatis提供了更准确的映射和ORM机制

        3.3设计上的优点

MyBatis的一些设计使得它更容易扩展和定制

        3.4移植性

MyBatis可以通过映射器的简单修改来更轻松地使其适用于多种关系型数据库系统。

4、MyBatis的缺点:

       4.1对初学者不太友好

编写MyBatis映射器时,一些初学者可能会感到困难和不适应。

        4.2可读性问题

MyBatis中有些地方可能难以理解,比如,当一个SQL语句跨越多行时,可能不太容易阅读。

        4.3SQL注入问题

虽然MyBatis提供了预防SQL注入攻击的措施,但是在实践中,它们通常很难正确使用。

总体来说,两种框架都是优秀的Java持久化框架,具有适用性和可伸缩性,开发人员可以根据项目需求,在iBatis和MyBatis中做出选择。

 


http://chatgpt.dhexx.cn/article/tB3iR68K.shtml

相关文章

ibatis使用方法

转载。怕原地址丢失,备份。。 http://lyb520320.iteye.com/blog/586628 http://lyb520320.iteye.com/blog/586800 iBATIS3.0学习(一)使用iBATIS3.0完成增删改查 博客分类: iBATIS3 iBATIS Apache Spring SQL JDBC 使用iBATIS3.0完…

IBatis使用浅析

ibatis 历史 Eight years ago in 2002, I created the iBATIS Data Mapper and introduced SQL Mapping as an approach to persistence layer development. Shortly thereafter, I donated the iBATIS name and code to the Apache Software Foundation. The ASF has been th…

IBatis的使用

IBatis的使用 1、IBatis是什么 回顾之前前端访问后端的整个流程: View ------ >Controller --------> Service ---------> DAO ------> 数据库 View :前端jsp/HTML Controller:Servlet/SpringMVC Service :Spring DAO&…

IBatis——初步总结

IBatis是持久层的框架,也就是我们说的Dao层框架,关注数据库操作以及和Java对象之间的关联,我们将这样的框架也称之为ORM(Object/Relaction Mapping)框架.而这里映射的主要是我们的表和实体(bean&#xff09…

XMind导入Markdown(利用Typora导出opml)

安装Xmind XMind 是一款非常实用的商业思维导图软件 首先,安装Xmind并打开。通过"帮助"——>“关于Xmind”,可以获取到当前的版本号为 XMind 8 Update 9 在"文件"——>“导入”,可以看到Xmind支持的导入格式仅有…

推荐一款高效Cpp解析xml工具--RapidXml

解析效率比Xerces DOM 快50-100倍,tinyxml快30-60 ,作者自己牛逼哄哄的说这是他所知道的最快的xml解析库了~~ 作者介绍说:" The table below compares speed of RapidXml to some other parsers, and to strlen() function executed on…

C++中rapidxml用法及例子

rapidxml是一个快速的xml库,比tinyxml快了50-100倍。本文给出创建、读取、写入xml的源码。 由于新浪博客不支持文本文件上传,在使用下面代码需要先下载 rapidxml,关于这个库的下载地址为: 官方网站: http://rapidxml.…

C++ Xml解析的效率比较(Qt/TinyXml2/RapidXml/PugiXml)

C Xml解析的效率比较(Qt/TinyXml2/RapidXml/PugiXml) C Xml解析的效率比较QtTinyXml2RapidXmlPugiXml 问题背景测试环境Qt - QDomDocumentTinyXml-2RapidXmlPugiXml总结 通常我们在一些软件的初始化或者保存配置时都会遇到对XML文件的操作,包…

SlimXml和TinyXml,RapidXml的性能对比

July 18th, 2010 zero Leave a comment Go to comments 前两天有朋友问,我的SlimXml有没有和RapidXml对比过效率?我是第一次听说这个库,更不用说对比效率了,于是上他们网站看了下。 好家伙,居然号称比TinyXml快30&…

RapidXml使用

vs2017 rapidxml-1.13 1 RapidXml使用 1.1 创建xml #include <iostream> #include "rapidxml/rapidxml.hpp" #include "rapidxml/rapidxml_utils.hpp" #include "rapidxml/rapidxml_print.hpp"using namespace rapidxml;void crateXml(…

使用rapidxml解析xml

rapidxml是一个由C模板实现的高效率xml解析库&#xff0c;号称解析速度比tinyxml快50倍&#xff08;忽悠&#xff09;&#xff0c;并作为boost::property的内置解析库&#xff1a; 其独立版本的官网&#xff1a;http://rapidxml.sourceforge.net/ 使用rapidxml的方法tinyxml极其…

RapidXml读取并修改XML文件

RapidXml读取并修改XML文件 RapidXml介绍RapidXml读取与修改xml文件 RapidXml介绍 RapidXml尝试创建最快的XML解析器&#xff0c;同时保留可用性&#xff0c;可移植性和合理的W3C兼容性。它是一个用现代C 编写的原位解析器&#xff0c;解析速度接近strlen在同一数据上执行的函数…

c++开源库rapidxml介绍与示例

官方地址&#xff1a;http://rapidxml.sourceforge.net/ 官方手册&#xff1a;http://rapidxml.sourceforge.net/manual.html 也可以在github上下载到别人上传的rapidxml:https://github.com/dwd/rapidxml 1.头文件 一般我们用到的头文件只有这三个 #include "rapidx…

Ubuntu 18.04 LDAP认证

将ubuntu配置为通过ldap认证&#xff0c;使其成为ldap client&#xff0c;系统版本ubuntu 18.04。 一 软件安装 apt-get install ldap-utils libpam-ldap libnss-ldap nslcd配置1 配置2 配置3 配置4 配置5 配置6 配置7 配置8 配置8 二 认证方式中添加Ldap #auth-client-conf…

LDAP认证服务器

1.要准备的环境与软件(这里测试环境是Centos6.0-64位系统) alfresco-community-4.2.c-installer-linux-x64.bin (注: alfresco是一个免费开源系统&#xff0c;可以自己去下载) apache-tomcat-7.0.42.tar db-4.5.20.tar jdk-6u45-linux-x64.bin openldap-stable-20100219.tar ph…

Jumpserver部署+Ldap认证

内容导航 &#xff08;一&#xff09;jumpserver快速部署1&#xff0c;部署内容2&#xff0c;附上安装脚本3&#xff0c;解决github无法连接4&#xff0c;修改配置 &#xff08;二&#xff09;使用jumpserver1&#xff0c;登录信息2&#xff0c;添加主机3&#xff0c;web终端登…

SVN使用LDAP认证

前言 SVN架构 用户访问SVN服务器分为两个部分&#xff1a;认证与授权。 SVN内置了有认证与授权机制&#xff0c;其认证是通过SVN仓库内的passwd文件提供&#xff0c;但它是明文、静态的&#xff0c;不方便且安全性低。 SVN还支持外部的认证&#xff0c;比如SASL&#xff0c;…

ldap 认证 java_Java实现LDAP认证(上)

Baidu脑残&#xff0c;把原来的空间改得不伦不类。所以把一些技术的东西挪到这里。 我找到两种方法&#xff0c;大同小异&#xff0c;第一种是通过Spring&#xff0c;适合已经采用Spring的项目。 一般来说用户名和密码都是保存在数据库中。现在有这个需求&#xff0c;用户名和密…

Harbor 整合ldap认证

前提&#xff1a; ldap服务器已经安装&#xff1a;OpenLDAP安装部署 harbor服务器已经安装&#xff1a;Harbro v1.8.0部署 一、ldap组织结构 1、登录信息 2、查看用户信息 二、harbor配置 1、使用默认密码登录&#xff0c;admin/Harbor12345 2、认证模式 3、测试ldap服务器…

ldap认证 java_Java实现LDAP认证(上) | 学步园

Baidu脑残&#xff0c;把原来的空间改得不伦不类。所以把一些技术的东西挪到这里。 我找到两种方法&#xff0c;大同小异&#xff0c;第一种是通过Spring&#xff0c;适合已经采用Spring的项目。 一般来说用户名和密码都是保存在数据库中。现在有这个需求&#xff0c;用户名和密…