1.简介
使用SQL Map,能够大大减少访问关系数据库的代码。SQL Map使用简单的XML配置文件将Java Bean映射成SQL语句,对比其他的数据库持续层和ORM框架(如JDO的实现,Hibernate等),SQL Map最大的优点在于它简单易学。要使用SQL Map,只要熟悉Java Bean,XML和SQL,就能使您充分发挥SQL语句的能力。
2.工作原理
SQL Map提供了一个简洁的框架,使用简单的XML描述文件将Java Bean,Map实现和基本数据类型的包装类(String,Integer等)映射成JDBC的PreparedStatement。以下流程描述了SQL Maps的高层生命周期:
将一个对象作为参数(对象可以是Java Bean,Map实现和基本类型的包装类),参数对象将为SQL修改语句和查询语句设定参数值。
1) 执行mapped statement。这是SQL Maps最重要的步骤。SQL Map框架将创建一个PreparedStatement实例,用参数对象为PreparedStatement实例设定参数,执行PreparedStatement并从ResultSet中创建结果对象。
2) 执行SQL的更新数据语句时,返回受影响的数据行数。执行查询语句时,将返回一个结果对象或对象的集合。和参数对象一样,结果对象可以是Java Bean,Map实现和基本数据类型的包装类。
3.SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE sqlMapConfigPUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN""http://www.ibatis.com/dtd/sql-map-config-2.dtd"><!-- Always ensure to use the correct XML header as above! --><sqlMapConfig><!-- The properties (name=value) in the file specified here can be used placeholders in this config file (e.g. “${driver}”. The file is relative to the classpath and is completely optional. --><properties resource=" examples/sqlmap/maps/SqlMapConfigExample.properties " /><!-- These settings control SqlMapClient configuration details, primarily to do with transactionmanagement. They are all optional (more detail later in this document). --><settingscacheModelsEnabled="true"enhancementEnabled="true"lazyLoadingEnabled="true"maxRequests="32"maxSessions="10"maxTransactions="5"useStatementNamespaces="false"/><!-- Type aliases allow you to use a shorter name for long fully qualified class names. --><typeAlias alias="order" type="testdomain.Order"/><!-- Configure a datasource to use with this SQL Map using SimpleDataSource.Notice the use of the properties from the above resource --><transactionManager type="JDBC" ><dataSource type="SIMPLE"><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="JDBC.DefaultAutoCommit" value="true" /><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><!-- Identify all SQL Map XML files to be loaded by this SQL map. Notice the pathsare relative to the classpath. For now, we only have one… --><sqlMap resource="examples/sqlmap/maps/Person.xml" /></sqlMapConfig>
1)<transactionManager>元素
<transationManager>元素让您为SQL Map配置事务管理服务。属性type指定所使用的事务管理器类型。这个属性值可以是一个类名,也可以是一个别名。包含在框架的三个事务管理器分别是:JDBC,JTA和EXTERNAL。