ibatis介绍及配置文件讲解,结合实例

Spring+Ibatis集成开发实例 首先简历数据库demo(本文选mysql)数据库脚本: CREATE TABLE `ibatis` (  `id` varchar(20) NOT NULL,  `name` varchar(20) default NULL,  PRIMARY KEY  (`id`)) ENGINE=InnoDB DEFAULT CHARSET=gb2312;insert into ibatis  阅读详情

写下博客最大的好处就是即可以分享给大家,自己也作为一种记忆方式吧。为了便于个人对知识点整理写此文章,还望各位指点。

ibatis是一种“半自动化”的ORM实现,它针对sql语句进行映射。它还是从关系型开始到对象型的思路来解决数据库的操作问题。我这里主要结合一个例子说一说。由于初出茅庐,这里面许多东西都是查找和询问得到的。

下面是主要配置文件sqlMapConfig.xml配置文件,它主要是完成事务的配置、数据库的连接、引入SqlMap.xml配置文件(配置sql语句、输入映射和输出映射)。

下面是sqlMapConfigure.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<!--<settings  -->
<!--    cacheModelsEnabled ="true" 是否启用缓存机制--> 
<!--     lazyLoadingEnabled="true"   是否启用延迟加载机制 --> 
<!--    enhancementEnabled="true"   是否启用字节码增强机制 -->
<!--     errorTracingEnabled="true"   是否启用错误处理机制 --> 
<!--     maxRequests="32"   最大并发请求数 -->  
<!--     maxSessions="10"   最大Session数 --> 
<!--     maxTransactions="5"   最大并发事务数 --> 
<!--    useStatementNamespaces="true" />   是否启用名称空间 -->  
<!-- 数据库的连接 -->
<properties resource="resources/jdbc.properties" />
<transactionManager type="JDBC"><!-- 定义了ibatis的事务管理器有3中(JDBC,JTA,EXTERNAL) --> 
<dataSource type="SIMPLE"><!-- type属性指定了数据源的链接类型,也有3种类型(SIMPLE,DBCP,JNDI) -->
<property name="JDBC.Driver" value="${driver}" />
<property name="JDBC.ConnectionURL" value="${url}" />
<property name="JDBC.Username" value="${username}" />
<property name="JDBC.Password" value="${password}" />
<property name="Pool.MaximumActiveConnections" value ="10" />   <!-- 连接池维持的最大容量 -->  
<property name="Pool.MaximumIdleConnections" value ="5" />   <!-- 连接池允许挂起的最大连接 --> 
<property name="Pool.MaximumCheckoutTime" value ="120000" />   <!-- 连接被某个任务所允许占用的最大时间 -->  
<property name="TimeToWait" value ="500" />   <!-- 线程允许等待的最大时间 --> 
</dataSource>
</transactionManager>
<!-- 引入SQLMap.xml(配置SQL语句、输入映射和输出映射) -->
<sqlMap resource="resources/User.xml"/>
<sqlMap resource="resources/Ext.xml"/><!-- sqmMap节点指定了映射文件的位置,配置文件中可以定义多个sqlMap元素,以指定项目内所包含的所有映射文件.-->

</sqlMapConfig>

配置文件的详细解释

一、transactionManager节点

transactionManagerab定义了ibatis的事务管理器,目前提供了以下几种选择:


1)  JDBC
:通过传统JDBC Connection.commit/rollback实现事务支持.
2)  JTA:
使用容器提供的JTA服务实现全局事务管理
.
3)  EXTERNAL
:外部事务管理,如在EJB中使用ibatis,通过EJB的部署配置即可实现自动的事务管理机制.此时ibatis将把所有事务委托给外部容器进行管理.

二 、dataSource节点

dataSource从属于 transactionManager,用于设定ibatis运行期使用DataSource属性.
 type
属性: dataSource元素的 type属性指定了 dataSource的实现类型.可选项目
:
1)  SIMPLE:
是 ibatis内置的 dataSource实现,其中实现了一个简单的数据库连接池机制,对应 ibatis实现类为

               com.ibatis.sqlmap.engine.datasource.SimpleDataSourceFactory.
  JDBC
使用数据库自己的事务(局部事务),connect.beginTranstion(), connect.commit()等.

2)  DBCP:基于Apache DBCP连接池组件实现的DataSource封装,当无容器提供DataSource服务时,建议使用该选项,对应ibatis实现类为
              com.ibatis.sqlmap.engine.datasource.DbcpDataSourceFactory.
  JTA
:使用jta事务管理器管理事务(全局事务),使用userTranstion对象.

3)  JNDI:使用J2EE容器提供的DataSource实现, DataSource将通过指定的JNDI Name从容器中获取.对应ibatis实现类为
              com.ibatis.sqlmap.engine.datasource.JndiDataSourceFactory.
  Ibatis
不控制事务,事务交由外部控制,一般在CTM,或spring托管事务中使用.

以上就是我在网上再结合自己项目总结的有关SQLMapConfig.xml配置文件的了解

接下来看一下sqlmap.xml配置文件(SQL语句的编写)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" 
"http://www.ibatis.com/dtd/sql-map-2.dtd">

<sqlMap namespace="UserDAO">
	<!-- 建立表与对象的映射关系 -->
	<resultMap id="UserDO" class="entity.User"> 
		<result property="id" column="ID" />
		<result property="username" column="USERNAME" />
		<result property="password" column="PASSWORD" />
	</resultMap>
	<!-- 常用的增删改查sql语句 -->
	<insert id="insert" parameterClass="entity.User">
		insert into USER (ID,USERNAME,PASSWORD)
		values (
		#id#,
		#username#,
		#password# 
		)
		<!-- 
		自动生成主键
		<selectKey resultClass="int" keyProperty="id">
			SELECT LAST_INSERT_ID() AS ID
		</selectKey>
		 -->
	</insert>
	
	<delete id="deleteUserByName" parameterClass="java.lang.String">
		<![CDATA[
		delete from USER
		where USERNAME = #username#
		]]>
	</delete>
	
	<update id="updateUser" parameterClass="entity.User">
		update USER
		<dynamic prepend="set">
		<isNotNull prepend="," property="username"><!-- 判断是否为空 -->
		USERNAME = #username#
		</isNotNull>
		<isNotNull prepend="," property="password">
		PASSWORD = #password#
		</isNotNull>
		</dynamic>
		where ID = #id#
	</update>
	
	<!-- resultClass与上方sqlMap定义的映射对应 -->
	<select id="selectUser" parameterClass="java.lang.String" resultMap="UserDO">
		select ID,USERNAME,PASSWORD
		from USER
		where USERNAME = #username#
	</select>
	
</sqlMap>
有关这个配置文件的讲解可以看一看 ibatis中SQL映射配置文件中动态SQL语句语法 

动态语句的编写与理解,方便今后查看。而且我自己也写了一个SQL语句的配置文件,如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" 
"http://www.ibatis.com/dtd/sql-map-2.dtd">
<!-- 自己单独写SQL语句  -->
<sqlMap namespace="UserDAO">

    <select id="select" parameterClass="java.lang.String" resultMap="UserDO">
		select ID,USERNAME,PASSWORD
		from USER
		where PASSWORD = #password#
	</select>
</sqlMap>
主要配置文件和SQL语句相关配置文件都结束了,接下来说一说我单独写的有关连接数据库的.properties文件

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=1234
这个配置文件在书写的时候一定要小心,不可以有无用的空格,不然会保存,这样将他提出来也是便于今后修改和整理,以下是对jdbc连接数据库的详细解析:

#连接设置
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=123

#<!-- 初始化连接 -->
initialSize=10

#最大连接数量
maxActive=50

#<!-- 最大空闲连接 -->
maxIdle=20

#<!-- 最小空闲连接 -->
minIdle=5

#<!-- 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒 -->
maxWait=60000


#JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:[属性名=property;]
#注意:"user" 与 "password" 两个属性会被明确地传递,因此这里不需要包含他们。
connectionProperties=useUnicode=true;characterEncoding=utf-8

#指定由连接池所创建的连接的自动提交(auto-commit)状态。
defaultAutoCommit=true

#driver default 指定由连接池所创建的连接的只读(read-only)状态。
#如果没有设置该值,则“setReadOnly”方法将不被调用。(某些驱动并不支持只读模式,如:Informix)
defaultReadOnly=

#driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)。
#可用值为下列之一:(详情可见javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE
defaultTransactionIsolation=READ_UNCOMMITTED

配置文件都OK了,下面就是实体类和测试类了,实体类必须要封装,这是必须的。

package entity;

public class User {

	private int id;
	private String username;
	private String password;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}
测试类我在这里给大家写出了基本的增删改查:

package test;

import java.io.Reader;
import java.util.List;

import com.ibatis.common.resources.Resources;
import com.ibatis.common.util.PaginatedList;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

import entity.User;

public class Test {
	public static void main(String[] args) {
		SqlMapClient sqlMapclient = null;
		try {
			Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
			//SqlMapClient是ibatis的核心组件,提供数据操作的基础平台。SqlMapClient可通过XmlSqlMapClientBuilder创建: 
			sqlMapclient = SqlMapClientBuilder.buildSqlMapClient(reader);
		User user = new User();
		
		//增
		user.setId(3);
		user.setPassword("1234");
		user.setUsername("cg1");
		sqlMapclient.insert("insert", user);
		
		//改
//		user.setPassword("123");
//		user.setId(1);
//		sqlMapclient.update("updateUser", user);
		
		//删
//		sqlMapclient.delete("deleteUserByName","troy");
		
		//查
//		@SuppressWarnings("unchecked")
//		//调用写的基本方法
//		List<User> users = (List<User>) sqlMapclient.queryForList("selectUser", "cg");
//		for(User temp : users) {
//			System.out.println(temp.getId() + "-" + temp.getUsername() + "-" + temp.getPassword());
//		}
//		@SuppressWarnings("unchecked")
//		//调用自己后填入的方法
//		List<User> users1 = (List<User>) sqlMapclient.queryForList("select", "123456");
//		for(User temp : users1) {
//			System.out.println(temp.getId() + "-" + temp.getUsername() + "-" + temp.getPassword());
//		}

		reader.close();
		} catch (Exception e) {
			e.printStackTrace();
		}

	}
}
这篇文章主要参考了以下文章:

iBATIS配置文件详细说明

简单实例链接地址:

 ibatis框架简单应用

IBATIS配置文件sqlmap-config.xml之乱配 iBATIS教程要从iBATIS的概念开始,它是又一个O/R Mapping解决方案,j2ee的O/R方案真是多,和Hibernate相比,iBATIS最大的特点就是小巧,上手很快。如果你不需要太多复杂的功能,iBATIS是能满足你的要求又足够灵活的最简单的解决方案。 阅读详情

相关推荐

ibatis实战之一对多关联

ibatis一对多关联查询 在实际开发中,我们常常遇到关联数据的情况,如User对象拥有若干Book对象 每个Book对象描述了归属于一个User信息 如下步骤演示一对多关联 1、创建user(id,name,age)表和book(id,name,uid)表 2、POJO类

itmyhome的专栏 7725

iBATIS配置文件详细说明

>>>>>>sqlMapConfig.xml文件详解" href="http://blog.youkuaiyun.com/kardelpeng/article/details/6276643">ibatis学习笔记(一)>>>>>>>sqlMapConfig.xml文件详解 1.sqlMapConfig.xml配置文件详解: Xml代码   1.   xml version="1.0" enco

xwygn的专栏 4万+

掌握iBATIS框架中的<iterate>标签

iBATIS框架,作为早期流行的ORM(对象关系映射)解决方案之一,为Java开发者提供了一种简便的方式来操作数据库。它的核心是通过XML文件或注解来映射SQL语句和Java对象,从而简化了传统JDBC操作的复杂性。动态SQL是指在执行时,SQL语句可以根据实际需要进行拼装和修改的SQL。它与静态SQL相对,后者是在编译期就已经确定,不会在运行时改变。动态SQL能够根据不同的条件和参数生成不同的SQL语句,使得代码更加灵活,适用于复杂的查询和更新操作。

weixin_28787801的博客 1230

ibatis源码分析—配置文件解析(1)

ibatis源码分析—配置文件解析

wonderwall625的博客 526

iBATIS 2.3.4官方驱动包的全面资源介绍

社区交流平台是获取帮助和分享经验的重要场所。对于iBATIS而言,以下是一些重要的社区交流平台:- iBATIS官方论坛:这是最直接获取帮助的地方,官方和社区成员会在论坛上回答问题。- GitHub上的iBATIS仓库:可以在这里查看代码、提交issue和参与讨论。- Stack Overflow:一个面向程序员的问题与答案交流平台,在这里你可以提问或者搜索已有的解决方案。- 专业的中文社区和技术博客,如博客园、优快云等,经常有开发者分享iBATIS相关的经验和技术文章。

weixin_42124497的博客 920

iBATIS代码自动生成工具:快速开发实践

iBATIS是一个轻量级的Java持久层框架,专注于数据访问层的优化。与其它ORM框架如Hibernate不同,iBATIS通过XML或注解的方式将SQL语句直接与业务逻辑分离,提供了一种灵活的数据访问方式,尤其适合于对数据库操作要求较高的场景。它主要包含以下几个核心组件::用于构建SqlSessionFactory对象。:一个线程安全的工厂对象,用于创建SqlSession实例。SqlSession:与数据库会话的接口,用于执行SQL命令。Mapper。

weixin_33773084的博客 915

ibatis多个dataSource配置

<br />⑶ dataSource节点<br />dataSource从属于transactionManager节点,用于设定ibatis运行期使用的DataSource属性。<br />type属性: dataSource节点的type属性指定了dataSource的实现类型。<br />可选项目:<br />Ø SIMPLE:<br />SIMPLE是ibatis内置的dataSource实现,其中实现了一个简单的数据库连接池机制, 对应ibatis 实现类为<br />com.ibatis.sqlm

Avenleft的专栏 9626

ibatis 配置文件详解

ibatis 配置文件详解

【详解】ibatissqlMapConfig.xml配置文件详解

​​ 是 iBATIS 框架中非常重要的配置文件,它负责配置数据源、事务管理、SQL 映射文件以及其他高级功能。通过合理配置,可以有效提升应用的性能和可维护性。希望以上内容对你有所帮助!如果有更多问题或需要进一步的解释,请随时提问。

牛肉胡辣汤 1181

ROS——无人机ROS仿真包 rotors_simulator 编译教程

文章目录 安装wstool sudo apt install python3-wstool 创建ROS工程 $ mkdir -p ~/UAV/src $ cd ~/UAV/src $ catkin_init_workspace # initialize your catkin workspace $ wstool init 下载源码 git clone git@github.com:ethz-asl/rotors_simulator.git 源码链接: https://github.com/eth

漫长IT路 5863

信贷风控分析—征信数据源

详解企业和个人征信报告,以及信贷风控之指标构造案例参考

csdnbt的博客 3628

ibatis介绍

ibatis基础代码包括: 1.    ibatis实例配置 一个典型的配置文件如下(具体配置项目的含义见后): xml version="1.0" encoding="UTF-8"    ?>         PUBLIC "-//iBATIS.com//DT

HeiBoyYang---->It Life 1073

SquareLine Studio汉化版安装激活全攻略:LVGL嵌入式UI设计从入门到出代码

嵌入式GUI开发中,LVGL作为轻量级开源图形库,广泛应用于STM32、ESP32等MCU平台。可视化设计器通过拖拽生成LVGL代码,大幅提升UI开发效率。SquareLine Studio正是这类工具的代表,支持界面设计、事件绑定与代码导出。其安装、汉化与激活是初学者常见门槛,尤其涉及LVGL版本匹配、字体配置及FreeRTOS移植等关键环节。本文围绕汉化版安装、一个月免费激活码使用及最小可用流程展开,帮助开发者快速上手LVGL界面设计,规避常见环境与集成问题。

weixin_29189987的博客 413

ibatis配置文件解析之总体流程

Ibatis配置文件解析的总体流程

prince2270的专栏 3241

全志平台Sensor驱动移植实战:从点亮到调优的完整指南

本文详细介绍了在全志平台上进行Sensor驱动移植的全过程,从硬件引脚配置到软件参数调优,涵盖点亮、出图和调优三大阶段。重点解析了OV02B10传感器的I2C通信建立、上电时序调试和初始化参数配置等关键技术点,并提供了实用的调试技巧与问题排查指南,帮助开发者高效完成全志平台Sensor驱动移植工作。

weixin_28727975的博客 218

AJ-Report开源数据大屏存在远程命令执行漏洞

该平台可以通过post方式在validationRules参数对应值中进行命令执行,可以获得服务器权限,登陆管理后台接管大屏。如果被攻击者利用,危害后果十分严重。

swordheart的博客 387

iBatis简单介绍

  1.       Ibatis是开源软件组织Apache推出的一种轻量级的对象关系映射(ORM)框架,和Hibernate、Toplink等在java编程的对象持久化方面深受开发人员欢迎。 对象关系映射(ORM):简单原理是通过面向对象方式操作关系型数据库,目前存储数据最常用最流行的工具是关系型数据库,其操作方式是通过 SQL语句操作数据库的表,但是对于Java面向对象编程语言中,所有的操...

奋斗的蜗牛 1万+

Diffix3D+复现

上下载模型,将其放在一个目录中,并将目录名填在demo代码中from_pretrained的cache_dir参数里。目录结构应该是"<PATH>/nvidia/difix/…给的requirements文件中pytorch和xformers的版本没有指定,这里测试过以下版本,可以成功运行。将readme中的demo代码新建一个python脚本复制进去,然后将脚本放在src目录中运行。如果遇到网络问题无法加载huggingface上的预训练模型,可以手动从。如果出现,以下错误重新。

NeverMakeIt的博客 1085

ibatis配置文件解析之XmlParserState

XmlParserState在iBatis配置文件解析中所起的作用

prince2270的专栏 2522

VMware Workstation Pro 16 安装 Ubuntu 20.04

VMware Workstation Pro 16 安装 ubuntu 20.04目录环境VMware Workstation下载Ubuntu 20.04下载安装过程 目录 环境 Windows 10 Workstation 16 Pro for Windows Ubuntu 20.04 LTS 64位 desktop版本 VMware Workstation下载 链接: https://www.vmware.com/products/workstation-pro/workstation-pro-eval

qq_45642410的博客 1万+

IgH EtherCAT 从入门到精通:第 29 章 实战:EoE 远程维护通道搭建

摘要:本章详细介绍了基于EoE(Ethernet over EtherCAT)协议的远程维护通道搭建方案。主要内容包括:1)网络架构设计,采用管理网络与EoE子网隔离的方案;2)从站EoE支持确认与IP地址配置,提供API和命令行两种方式;3)路由/交换两种部署模式,重点推荐路由模式并给出自动化配置脚本;4)SSH远程访问配置,包括直接连接和跳板访问两种方式;5)安全加固措施,如防火墙规则、SSH密钥认证等;6)故障恢复机制与性能注意事项。该方案实现了通过EtherCAT网络对从站设备的远程SSH访问、文件

从事嵌入式linux android驱动开发,拥有全栈能力 360

实例讲解-整合iBATIS和Spring在WEB开发中的应用

<!--.STYLE1 { font-family: Arial, Helvetica, sans-serif; font-size: 14px;}.STYLE4 {font-family: Arial, Helvetica, sans-serif}.STYLE5 {font-size: 14px}.STYLE6 {font-size: 12px}.STYL

pbMaster的专栏 5267

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

iBATIS In Action (三 )iBATIS的安装和配置

译注:本章讲解的是iBATIS的安装和配置,原书使用的是Java版本,与.NET版本的安装、配置过程不尽相同,因此这里直接就.NET版本进行说明。主要参考的是iBATIS官方的DataMapper Guide文档,本章的配置主要针对DataMapper,DataAccess的配置将出现在第10章。 iBATIS的安装过程快速而简单。它是一个类库,而不是应用程序,所以实际上并不需要安装,但要在应...

weixin_30471065的博客 220

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

MyBatis与iBATIS的比较

1.背景介绍 1. 背景介绍 MyBatis和iBATIS都是Java应用中常用的持久层框架,它们主要用于简化数据库操作,提高开发效率。MyBatis是iBATIS的后继者,继承了iBATIS的优点,同时也解决了iBATIS中的一些缺陷。本文将对比MyBatis和iBATIS的特点,分析它们的优缺点,并提供一些实际应用场景和最佳实践。 2. 核心概念与联系 MyBatis(MySQL中的B...

AI天才研究院 2062

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

iBATIS学习01:iBATIS概览+iBATIS十分钟快速上手操练

iBATIS概览+iBATIS十分钟快速上手操练 【iBATIS概览】 iBATIS是一个持久框架,可用来配置 Java 类的属性和 RDBMS 内的表列之间的映射。在配置时,此框架负责处理 JDBC 连接和分配。可以使用 XML 文件配置 iBATIS。 iBATIS 主要的设计目的是为了让我们执行 SQL 时对输入输出的数据管理更加方便,所以如何方便的让我们写出 SQL 和方便的获取 S

forDream的专栏 701
下一篇: 在遍历datatable并且修改每列值的时候提示此列为只读原因
勤学者闯天涯
博客等级 码龄10年 25粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值