在Spring的jpestore中,數據持久層用到了iBATIS SQLMaps,這裏寫一個iBATIS的簡單Demo,作爲iBATIS的學習筆記。
iBATIS的SQLMap配置文件是XML形式,一般叫SqlMapConfig.xml,如下:
Xml代碼
- ﹤?xml version="1.0" encoding="UTF-8"?﹥
- ﹤!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map
- Config 2.0/" "http://www.ibatis.com/dtd/sql-map-config-2.dtd"﹥
- ﹤sqlMapConfig﹥
- ﹤!--settings配置是可選的,用來控制sqlMapping的詳細配置,
- 主要是事務處理。參數具體含義請參考ibatis開發指南--﹥
- ﹤settings cacheModelsEnabled="true" enhancementEnabled="true"
- lazyLoadingEnabled="true" errorTracingEnabled="true" maxRequests="32"
- maxSessions="10" maxTransactions="5" useStatementNamespaces="false" /﹥
- ﹤!--使用SimpleDataSource配置數據源,DataSource的iBATIS實現:
- SimpleDataSource類,Jakarta DBCP(Commons),
- 和可通過JNDI上下文查找的DataSource(即應用服務器中的DataSource)--﹥
- ﹤transactionManager type="JDBC"﹥
- ﹤dataSource type="SIMPLE"﹥
- ﹤property name="JDBC.Driver"
- value="com.mysql.jdbc.Driver" /﹥
- ﹤property name="JDBC.ConnectionURL"
- value="jdbc:mysql://127.0.0.1:3306/jpetstore?" /﹥
- ﹤property name="JDBC.Username" value="root" /﹥
- ﹤property name="JDBC.Password" value="" /﹥
- ﹤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﹥
- ﹤!--引入所有的SQL Map配置文件,這裏的路徑是classpath的相對路徑,
- 例如下面的配置說明引入Account.xml,位置在com/quqworld/test/ibatis包內--﹥
- ﹤sqlMap resource="com/quqworld/test/ibatis/Account.xml" /﹥
- ﹤/sqlMapConfig﹥
接下來是iBATIS SQLMap映射文件Account.xml:
Xml代碼
- ﹤?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="Account"﹥
- ﹤!--在SQL Map框架中,Result Map是極其重要的組件。
- 在執行查詢Mapped Statement時,resultMap負責將結果集的列值映射成Java Bean的屬性值。--﹥
- ﹤resultMap id="result"
- class="org.springframework.samples.jpetstore.domain.Account"﹥
- ﹤result property="username" column="userid" columnIndex="1" /﹥
- ﹤result property="email" column="email" columnIndex="2" /﹥
- ﹤result property="firstName" column="firstname" columnIndex="3" /﹥
- ﹤result property="lastName" column="lastname" columnIndex="4" /﹥
- ﹤result property="status" column="status" columnIndex="5" /﹥
- ﹤result property="address1" column="addr1" columnIndex="6" /﹥
- ﹤result property="address2" column="addr2" columnIndex="7" /﹥
- ﹤result property="city" column="city" columnIndex="8" /﹥
- ﹤result property="state" column="state" columnIndex="9" /﹥
- ﹤result property="zip" column="zip" columnIndex="10" /﹥
- ﹤result property="country" column="country" columnIndex="11" /﹥
- ﹤result property="phone" column="phone" columnIndex="12" /﹥﹤/resultMap﹥
- ﹤select id="getAllAccountByUserid" resultMap="result"﹥
- select
- account.userid,
- account.email,
- account.firstname,
- account.lastname,
- account.status,
- account.addr1,
- account.addr2,
- account.city,
- account.state,
- account.zip,
- account.country,
- account.phone
- from account
- where account.userid=#value#
- ﹤/select﹥
- ﹤/sqlMap﹥
下面是iBATIS SQLMap的Java代碼:
Java代碼
- try {
- String resource = "com/quqworld/test/ibatis/SqlMapConfig.xml";
- Reader reader = Resources.getResourceAsReader(resource);
- SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
- Object object = sqlMap.queryForObject(
- "getAllAccountByUserid", "ACID",new Account());
- System.out.println("select result: " +object);
- } catch (Exception e) {
- e.printStackTrace();
- }
iBATIS SQLMap的配置Demo就向你介紹到這裏,希望對你有所幫助。
======================================================