ibatis配置文件、映射文件详解
ibatis快速入门(仅需两天)绝对经典,值得收藏

Ibatis开发要点Ibatis提供了一种半自动化的O/R Mapping实现框架。
它以牺牲工作量和移植性的代价换取了SQL语句设计的自由性和可优化性。
典型Ibatis配置文件<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE sqlMapConfig PUBLIC "-////DTD SQL Map Config 2.0//EN" "/dtd/sql-map-config-2.dtd"><sqlMapConfig><settings cacheModelsEnabled="true" //是否开启缓存enhancementEnabled="false" //是否开启字节码增强,提高get/set调用性能lazyLoadingEnabled="true" //是否开启延迟加载errorTracingEnabled="true" //是否启用错误日志maxRequests="32" //最大并发请求maxSessions="10" //最大允许并发SqlMapClient数maxTransactions="5" //最大并发事务数useStatementNamespaces="false" /> //是否使用statment命名空间<transactionManager type="JDBC"> //传统JDBC事务支持<dataSource type="SIMPLE"> //简单数据库连接池,对应SimpleDataSourceFactory<property name="JDBC.Driver" value="com.mysql.jdbc.Driver" /><property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost:3306/mysql" /> <property name="ername" value="root" /><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="Pool.TimeToWait" value="500" /> //允许等待最长时间<property name="Pool.PingQuery" value="select 1 from ACCOUNT" /> //连接状态检测语句<property name="Pool.PingEnabled" value="false" /> //是否开启连接状态检测<property name="Pool.PingConnectionsOlderThan" value="1" /> //连接状态检测时间设定<property name="Pool.PingConnectionsNotUsedFor" value="1" /> //空闲状态检测时间设定</dataSource></transactionManager><!-- JNDI<transactionManager type="JDBC"><dataSource type="JNDI"> //使用J2EE容器实现DataSource,对应实现类JndiDataSourceFactory<property name="DataSource" value="java:comp/env/jdbc/myDataSource" /></dataSource></transactionManager>--><!-- JTA<transactionManager type="JTA"> //使用容器提供的JTA服务实现全局事务管理<property name="UserTransaction" value="java:/ctx/con/UserTransaction" /><dataSource type="JNDI"><property name="DataSource" value="java:comp/env/jdbc/myDataSource" /></dataSource></transactionManager> --><sqlMap resource="com/ibatis/ao/User.xml" /></sqlMapConfig>User模型类public class User implements Serializable{private Integer id;private String name;private Integer sex;public User(){}public User(Integer id,String name,Integer sex){this.id=id;=name;this.sex=sex;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) { = name;}public Integer getSex() {return sex;}public void setSex(Integer sex) {this.sex = sex;}}模型类映射文件<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE sqlMap PUBLIC "-////DTD SQL Map 2.0//EN" "/dtd/ibatis/sql-map-2.dtd"><sqlMap namespace="User"><typeAlias alias="user" type="er" /> //设置映射路径<!-- 模块配置--><cacheModel id="userCache" type="LRU"> //设置缓存类型<flushInterval hours="24" /> //设置缓存有效期<flushOnExecute statement="updateUser" /> //执行特定statment是清空缓存<property name="size" value="1000" /> //设置缓存大小</cacheModel><resultMap id="userResult" class="user"> //resultMap结果映射<result property="id" column="id" /><result property="name" column="name" /><result property="sex" column="sex" /></resultMap><!-- Statement配置--><select id="getUser" resultMap="userResult" parameterClass="string"> //parameterClass参数类<![CDATA[selectname,sexfromt_userwherename=#name#]]></select><select id="getUserById" resultClass="user" parameterClass="Integer"> //resultClass结果类<![CDATA[selectname,sexfromt_userwhereid=#id#]]></select><insert id="insertUser" parameterClass="user"><![CDATA[INSERT INTO t_user (name,sex) values (#name#,#sex#)]]></insert><delete id="deleteUser" parameterClass="Integer"><![CDATA[delete from t_userWHERE id=#id#]]></delete><update id="updateUser" parameterClass="user"><![CDATA[update t_usersetname=#name#,sex=#sex#WHERE id=#id#]]></update></sqlMap>测试类public void testIbatisSqlMap() throws SQLException{String resource="sqlmap-config.xml";try {Reader reader=Resources.getResourceAsReader(resource);SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader); //SqlMapClient 核心类try{sqlMap.startTransaction();// User user=new User();// user.setId(new Integer(1));// user.setName("Samantha");// user.setSex(new Integer(11));// sqlMap.insert("insertUser",user);Integer key=new Integer(2);User user1=(User)sqlMap.queryForObject("getUserById",key);mitTransaction();System.out.println(user1.getName());} catch (SQLException e) {e.printStackTrace();}finally{sqlMap.endTransaction();}} catch (IOException e) {e.printStackTrace();}}Ibatis高级特性:1.数据关联:(一对多关联)<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE sqlMap PUBLIC "-////DTD SQL Map 2.0//EN" "/dtd/ibatis/sql-map-2.dtd"><sqlMap namespace="User"><typeAlias alias="user" type="er" /><typeAlias alias="address" type="com.ibatis.ao.Address" /><resultMap id="get-user-result" class="user"><result property="id" column="id" /><result property="name" column="name" /><result property="sex" column="sex" /><result property="addresses" column="id" select="User.getAddressByUserId" /> </resultMap><select id="User.getUsers" parameterClass="ng.String"resultMap="get-user-result"><![CDATA[selectid,name,sexfrom t_userwhere id = #id#]]></select><select id="User.getAddressByUserId" parameterClass="int"resultClass="address"><![CDATA[selectaddress,zipcodefrom t_addresswhere user_id = #userid#]]></select></sqlMap>对应代码:public void testIbatisSqlMap() throws SQLException, IOException {String resource = "sqlmap-config.xml";Reader reader = Resources.getResourceAsReader(resource);SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);// sqlMap系统初始化完毕List userList = sqlMap.queryForList("User.getUsers", "2");for (int i = 0; i < userList.size(); i++) {User user = (User) userList.get(i);System.out.println("==>" + user.getName());for (int k = 0; k < user.getAddresses().size(); k++) {Address addr = (Address)user.getAddresses().get(k);System.out.println(new String(addr.getAddress()));}}}这种对应在大数据量的情况下会产生性能问题如果是一对一关系:<resultMap ><result property="id" column="id"/><result property="name" column="name"/><result property="sex" column="sex"/><result property="address" column="t_address.address"/><result property="zipCode" column="t_address.zipcode"/></resultMap><select parameterClass="string"resultMap="get-user-result"><![CDATA[select*from t_user,t_addresswhere t_user.id=t_er_id]]></select>2.延迟加载:当真正访问对象时才执行SQL语句,提高了系统性能。
ibatis映射及参数设置

ibatis映射及参数设置<sqlMap namespace="sc_item"> <resultMap id="scaleItem" class="cn.db.model.ScaleItem" > <result property="id" column="id"/> <result property="scaleId" column="scaleId"/> <result property="content" column="content"/> <result property="status" column="status"/> <result property="dimensionId" column="dimensionId"/> <result property="serial" column="serial"/> </resultMap> <delete id="batchDelete"> <![CDATA[ DELETE FROM sc_item WHERE scaleId = #scaleId# AND ID = #id# ]]> </delete></sqlMap>红⾊是对应class中类的属性,紫⾊是参数,调⽤该语句的时候要注意参数是否对应。
如:private void deleteItems(String scaleId, List<Long> itemIds){ if(itemIds == null || itemIds.size() == 0) return; List<Map<String, Object>> params = new ArrayList<Map<String,Object>>(); for (Long itemId : itemIds) { Map<String, Object> param = new HashMap<String, Object>(); param.put("scaleId", scaleId); param.put("id", itemId); params.add(param); } this.dao.batchDelete("sc_item.batchDelete", params);}。
iBATIS的sqlMap配置文件

iBATIS的sqlMap配置文件sqlMapConfig.xml文件是Ibatis的核心配置文件(注意也可以不用这个名字)Ibatis的所有东西都是通过这个文件传递给应用程序的。
下面是一个基本的配置文件。
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE sqlMapConfigPUBLIC "-////DTD SQL Map Config 2.0//EN""/dtd/sql-map-config-2.dtd"><sqlMapConfig><properties resource="db.properties"/><settings cacheModelsEnabled="true" lazyLoadingEnabled="true"enhancementEnabled="true" errorTracingEnabled="true"useStatementNamespaces="false"maxRequests="30" maxSessions="20"maxTransactions="10" /><sqlMap resource="com/hzmc/capaa/domain/persistence /trustuser/AdminUser.xml" ></sqlMapConfig>下面介绍一下<settings>元素的配置1lazyLoadingEnabled:是否延迟加载(只加载必要信息而推迟其他未明确请求数据的技术),默认值是true。
Mybatis的配置文件和映射文件详解

Mybatis的配置⽂件和映射⽂件详解⼀、Mybatis的全局配置⽂件1、SqlMapConfig.xml(名称可变)是mybatis的全局配置⽂件,配置内容如下:properties(属性)settings(全局配置参数)typeAliases(类型别名)typeHandlers(类型处理器)objectFactory(对象⼯⼚)plugins(插件)environments(环境集合属性对象)environment(环境⼦属性对象)transactionManager(事务管理)dataSource(数据源)mappers(映射器)2、properties将数据库连接参数单独配置在db.properties(名称可变)中,放在类路径下。
这样只需要在SqlMapConfig.xml中加载db.properties的属性值。
这样在SqlMapConfig.xml中就不需要对数据库连接参数硬编码。
将数据库连接参数只配置在db.properties中,原因:⽅便对参数进⾏统⼀管理,其它xml可以引⽤该db.properties例如:db.propertiesjdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/mybatisername=rootjdbc.password=root相应的SqlMapConfig.xml<properties resource="db.properties"/><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${ername}"/><property name="password" value="${jdbc.password}"/></dataSource></environment></environments>注意: MyBatis 将按照下⾯的顺序来加载属性:⾸先、在properties标签中指定的属性⽂件⾸先被读取。
iBatis详细使用手册(.net版)

目录系列(1) 总览 (2)系列(2) 配置运行环境和日志处理 (4)系列(3) 映射文件基础 (11)系列(4) iBatisNet API基础 (14)系列(5) ParameterMap (19)系列(6) ResultMap (23)系列(1) 总览学习和使用Ibatisnet已经有一段时间了,前段时间也有写过一些与iBatis相关的Blog。
也答应过一些朋友要比较全面地介绍一下iBatis,分享自己的学习过程和使用经验,记录一些常见且容易出现的问题。
但由于前段时间一直在准备考试,而且当前的项目时间进度也比较紧,所以一直迟迟未能开始,在这里表示歉意,希望现在开始不会晚。
不过最近社区(博客园)好消息不断,我发现越来越多的人开始关注iBatis了,并且也有热心网友在极力推广,如果您已经对它已经有一些了解了,那么更推荐您去阅读ShanYou的文章,他写的文章可能更加适合您。
我本人也是一名初学者,这里记录的一些东西可能不会有很多的理论知识(理论知识还不够扎实),更多的可能是突出自己学习过程中需要很长时间来解决的一些问题,或者是个人认为特别重要,并且容易忘记的细节。
水平有限,出现错误在所难免,如在这过程中不当之处敬请愿谅,并请不啬赐教。
废话一翻后,进入今天的正题。
今天的主题是Introduction,非官方正式介绍的中文版,更多详细的介绍请参阅官方文档。
我们要使用它就必须要知道它是干什么用的,能为我们做哪些工作,开发效率如何,执行效率如何,技术难度怎么样。
提到iBatis,大家可能会与ORM技术联系起来。
是的,没错,它与ORM技术有一定程度上的联系,但是更确切地讲,它并不是一种很正统的ORM解决方案。
因为它不像NHi bernate那样,具备全自动的数据操作,包括查询,插入,更新,删除;也没有像它那样,与数据库的约束关系有紧密的联系(对NHibernate的了解不多,如果有不妥之处,希望能留下你们的臭鸡蛋,等着下回用)。
ibatis配置简介

IBATIS配置简介iBatis其实不是个真正意义上的OR-Mapping, 只能称为是个OSQL-Mapping吧,我们开发人员还是要自己写SQL,不过这个我比较喜欢,我们可以控制的更多,更灵活。
不像Hibernate那么死板。
iBatis将Java对象(大多是我们的Java Bean)映射成JDBC的PreparedStatement的输入参数和ResultSet。
个人认为主要就是将我的的Java 对象映射到SQL的参数和将SQL的查询结果转换为Java对象。
下面说说我学习iBATIS SQL Maps开发指南的一些收获吧。
(1) SQL Map XML 配置文件 SqlMapConfig.xml的深刻认识。
<setting>元素,这个以前自己没有接触过,最学习到了,想和大家分享一下。
<setting>元素用于配置和优化SqlMapClient实例。
<setting>元素本身及其所有的属性都是可选的,子元素如下:maxRequests 同时执行SQL语句的最大线程数,通常至少是maxTransactions 的10倍,默认值是512。
maxSessions 同时活动的最大session数。
应该小于maxRequests,并大于或等于maxTransactions,默认128。
maxTransactions 同时进入sqlMapClient.startTransaction()的最大线程数,默认32。
cacheModelsEnabled 全局性地启用或禁止SqlMapClient的所有缓存model,默认true。
调试程序时使用。
lazyLoadingEnabled 全局性地启用或禁用SqlMapClient的所有延迟加载,默认true。
调试程序时使用。
enhancementEnabled 全局性地启用或禁用运行时字节码增强,以优化访问Java Bean属性的性能,同时优化延迟加载的性能,默认false。
ibatis 教程 详解
0.0 2004.8.1 夏昕第一版1.0 2004.9.1 夏昕补充ibatis in Spring 部分OpenDoc 版权说明本文档版权归原作者所有。
在免费、且无任何附加条件的前提下,可在网络媒体中自由传播。
如需部分或者全文引用,请事先征求作者意见。
如果本文对您有些许帮助,表达谢意的最好方式,是将您发现的问题和文档改进意见及时反馈给作者。
当然,倘若有时间和能力,能为技术群体无偿贡献自己的所学为最好的回馈。
另外,笔者近来试图就日本、印度的软件开发模式进行一些调研。
如果诸位可以赠阅日本、印度软件研发过程中的需求、设计文档以供研究,感激不尽!ibatis 开发指南ibatis Quick Start (5)准备工作 (5)构建ibatis 基础代码 (5)ibatis 配置 (11)ibatis 基础语义 (16)XmlSqlMapClientBuilder (16)SqlMapClient (16)SqlMapClient 基本操作示例 (16)OR 映射 (19)ibatis 高级特性 (26)数据关联 (26)一对多关联 (26)一对一关联 (28)延迟加载 (30)动态映射 (31)事务管理 (35)基于JDBC 的事务管理机制 (35)基于JTA的事务管理机制 (36)外部事务管理 (38)Cache (39)MEMORY类型Cache 与WeakReference (40)LRU 型Cache (42)FIFO 型Cache (43)OSCache (43)ibatis 开发指南相对Hibernate 和Apache OJB 等“一站式”ORM 解决方案而言,ibatis 是一种“半自动化”的ORM 实现。
所谓“半自动”,可能理解上有点生涩。
纵观目前主流的ORM ,无论Hibernate 还是Apache OJB,都对数据库结构提供了较为完整的封装,提供了从POJO 到数据库表的全套映射机制。
ibatis配置文件详解
iBatis 配置文件详解一:ibatis基础代码包括:1. ibatis实例配置一个典型的配置文件如下(具体配置项目的含义见后):<? xml version="1.0" encoding="UTF-8" ?><! DOCTYPE sqlMapConfigPUBLIC "-////DTD SQL Map Config 2.0/"/dtd/sql-map-config-2.dt<sqlMapConfig >< settingscacheModelsEnabled ="true"enhancementEnabled ="true"lazyLoadingEnabled ="true"errorTracingEnabled ="true"maxRequests ="32"maxSessions ="10"maxTransactions ="5"useStatementNamespaces ="false"/>< transactionManager type ="JDBC" >< dataSource type ="SIMPLE" >< property name ="JDBC.Driver" value ="com.p6spy.engine.spy.P6SpyDriver" /> < property name ="JDBC.ConnectionURL" value ="jdbc:mysql://localhost/sample"/>< property name ="ername" value ="user" />< property name ="JDBC.Password" value ="mypass" />< property name ="Pool.MaximumActiveConnections" value ="10" />< property name ="Pool.MaximumIdleConnections" value ="5" />< property name ="Pool.MaximumCheckoutTime" value ="120000" />< property name ="Pool.TimeToWait" value ="500" />< property name ="Pool.PingQuery" value ="select 1 from ACCOUNT" />< property name ="Pool.PingEnabled" value ="false" />< property name ="Pool.PingConnectionsOlderThan" value ="1" />< property name ="Pool.PingConnectionsNotUsedFor" value ="1" /></ dataSource ></ transactionManager >< sqlMap resource ="com/ibatis/sample/User.xml" /></ sqlMapConfig >⑴ Settings 节点cacheModelsEnabled是否启用SqlMapClient上的缓存机制。
ibatis用法
ibatis用法iBATIS(现已更名为 MyBatis)是一种用于将对象与 SQL 语句映射的持久化框架。
以下是 iBATIS/MyBatis 的基本用法:配置文件:创建一个MyBatis 配置文件(通常是mybatis-config.xml),其中包含数据库连接信息、映射文件的位置等配置。
<!-- mybatis-config.xml --><configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mydatabase"/><property name="username" value="root"/><property name="password" value="password"/></dataSource></environment></environments><mappers><mapperresource="com/example/mappers/UserMapper.xml"/></mappers></configuration>映射文件:创建一个XML 文件,用于映射Java 对象与SQL 语句。
ibatis的原理
ibatis的原理iBATIS(即Internet-Based Automated Testing Information System)是一种基于Java的持久化框架,用于简化数据库访问的过程。
它采用了一种简单直观的方式来映射Java对象和SQL语句,使得开发人员可以更加专注于业务逻辑的实现,而不用关心底层的数据库操作细节。
iBATIS的原理可以简单概括为以下几个方面:1. SQL映射文件:iBATIS通过XML格式的SQL映射文件来定义数据库操作的语句。
这些映射文件包含了SQL语句的定义,以及与Java对象之间的映射关系。
开发人员可以在映射文件中定义各种操作,如插入、更新、删除和查询等。
2. 数据源配置:在应用程序启动时,需要配置数据源,即数据库的连接信息。
iBATIS支持多种数据源类型,如JDBC、JNDI和DataSource等。
通过配置数据源,iBATIS可以根据需要获取数据库连接,并执行相应的SQL语句。
3. SQL执行:在执行SQL语句之前,需要创建一个SqlMapClient 对象,该对象是iBATIS的核心组件之一。
通过SqlMapClient对象,可以获取一个SqlSession对象,通过该对象可以执行SQL语句。
在执行SQL语句时,iBATIS会根据映射文件中定义的SQL语句,将Java对象与SQL语句进行参数映射,并执行相应的数据库操作。
4. 结果映射:执行SQL语句后,iBATIS会将查询结果映射到Java 对象中。
开发人员可以在映射文件中定义映射规则,将查询结果的列与Java对象的属性进行映射。
iBATIS支持多种映射方式,如自动映射、手动映射和混合映射等。
通过结果映射,可以将数据库查询结果转化为Java对象,便于在应用程序中进行处理和展示。
5. 缓存管理:为了提高数据库访问的性能,iBATIS提供了一种缓存机制。
在执行SQL语句时,iBATIS会将查询结果缓存起来,下次执行相同的查询时,可以直接从缓存中获取结果,而不必再次访问数据库。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ibatis学习笔记(一)>>>>>>>sqlMapConfig.xml文件详解1.sqlMapConfig.xml配置文件详解:Xml代码1.<?xml version="1.0"encoding="UTF-8"?>2.<! DOCTYPE sqlMapConfig3.P UBLIC "-////DTD SQL Map Config 2.0//EN"4."/dtd/sql-map-config-2.dtd" >5.<sqlMapConfig>6.<settings7.cacheModelsEnabled ="true" <!--是否启用缓存机制-- >zyLoadingEnabled="true"<!-- 是否启用延迟加载机制 -->9.enhancementEnabled="true"<!-- 是否启用字节码增强机制 -->10.errorTracingEnabled="true"<!-- 是否启用错误处理机制 -->11.maxRequests="32"<!-- 最大并发请求数 -->12.maxSessions="10"<!-- 最大Session数 -->13.maxTransactions="5"<!-- 最大并发事务数 -->eStatementNamespaces="true"/><!-- 是否启用名称空间 -->15.<transactionManager type ="JDBC"><!-- 定义了ibatis的事务管理器有3中(JDBC,JTA,EXTERNAL) -->16.<dataSource type ="SIMPLE"><!-- type属性指定了数据源的链接类型,也有3种类型(SIMPLE,DBCP,JNDI) -->17.<property name ="JDBC.Driver"value ="com.mysql.jdbc.Driver"/>18.<property name ="JDBC.ConnectionURL"value ="jdbc:mysql://localhost/test"/>19.<property name ="ername"value ="root"/>20.<property name ="JDBC.Password"value ="wyq"/>21.<property name ="Pool.MaximumActiveConnections"value ="10"/><!-- 连接池维持的最大容量 -->22.<property name ="Pool.MaximumIdleConnections"value ="5"/><!-- 连接池允许挂起的最大连接 -->23.<property name ="Pool.MaximumCheckoutTime"value ="120000"/><!-- 连接被某个任务所允许占用的最大时间 -->24.<property name ="TimeToWait"value ="500"/><!-- 线程允许等待的最大时间 -->25.26.</dataSource>27.</transactionManager>28.<sqlMap resource ="com/wyq/map/userMap.xml"/>29.</sqlMapConfig>一transactionManager节点transactionManagerab 定义了ibatis的事务管理器,目前提供了以下几种选择:1) JDBC通过传统JDBC mit/rollback实现事务支持.2) JTA使用容器提供的JTA服务实现全局事务管理.3) EXTERNAL外部事务管理,如在EJB中使用ibatis,通过EJB的部署配置即可实现自动的事务管理机制.此时ibatis将把所有事务委托给外部容器进行管理.此外,通过Spring等轻量级容量实现事务的配置化管理也是一个不错的选择.二dataSource 节点dataSource 从属于transactionManager, 用于设定ibatis运行期使用DataSource属性.type 属性: dataSource 元素的type 属性指定了dataSource 的实现类型.可选项目:1) SIMPLE:SIMPLE 是ibatis 内置的dataSource 实现,其中实现了一个简单的数据库连接池机制,对应ibatis 实现类为com.ibatis.sqlmap.engine.datasource.SimpleDataSourceFactory.JDBC 使用数据库自己的事务(局部事务),connect.beginTranstion(), mit()等.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托管事务中使用.JNDI的配置大部分都在应用服务器中进行,所以在ibatis中的配置相对简单(1)jdbc事务控制的JNDI配置Xml代码1.<transctionManager type ="JDBC">2.<dataSource type ="JNDI">3.<property name ="DataSource"value ="java:comp/env/jdbc/myDataSource"/>4.</dataSource>5.</transctionManager>(2)JTA事务控制的JNDI配置Xml代码1.<transctionManager type ="JTA">2.<property name ="UserTransaction"value ="java:/ctx/con/UserTransaction"/>3.<dataSource type ="JNDI">4.<property name ="DataSource"value ="java:comp/env/jdbc/myDataSource"/>5.</dataSource>6.</transctionManager>sqmMap节点指定了映射文件的位置,配置文件中可以定义多个sqlMap元素,以指定项目内所包含的所有映射文件.ibatis学习笔记(二)>>>>>>>sqlMapConfig.xml文件详解ibatis基础代码包括:1.ibatis实例配置一个典型的配置文件如下(具体配置项目的含义见后):<? xml version="1.0" encoding="UTF-8" ?><! DOCTYPE sqlMapConfigPUBLIC "-////DTD SQL Map Config 2.0/"[url]/dtd/[/url]sql-map-config-2.dt<sqlMapConfig >< settingscacheModelsEnabled ="true"enhancementEnabled ="true"lazyLoadingEnabled ="true"errorTracingEnabled ="true"maxRequests ="32"maxSessions ="10"maxTransactions ="5"useStatementNamespaces ="false"/>< transactionManager type ="JDBC" >< dataSource type ="SIMPLE" >< property name ="JDBC.Driver" value ="com.p6spy.engine.spy.P6SpyDriver" />< property name ="JDBC.ConnectionURL" value="jdbc:mysql://localhost/sample" />< property name ="ername" value ="user" />< property name ="JDBC.Password" value ="mypass" />< property name ="Pool.MaximumActiveConnections" value ="10" />< property name ="Pool.MaximumIdleConnections" value ="5" />< property name ="Pool.MaximumCheckoutTime" value ="120000" />< property name ="Pool.TimeToWait" value ="500" />< property name ="Pool.PingQuery" value ="select 1 from ACCOUNT" />< property name ="Pool.PingEnabled" value ="false" />< property name ="Pool.PingConnectionsOlderThan" value ="1" />< property name ="Pool.PingConnectionsNotUsedFor" value ="1" /></ dataSource ></ transactionManager >< sqlMap resource ="com/ibatis/sample/User.xml" /></ sqlMapConfig >⑴Settings 节点cacheModelsEnabled是否启用SqlMapClient上的缓存机制。