一個簡單的iBatis入門例子,用ORACLE和Java測試
目錄結構:
1.導入iBatis和oracle驅動。
2.創建類Person.java
package com.ibeats;
import java.util.Date;
public class Person {
private int id;
private String firstName;
private String lastName;
private double weightInKilograms;
private double heightInMeters;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName){
this.firstName =firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public double getWeightInKilograms() {
return weightInKilograms;
}
public void setWeightInKilograms(doubleweightInKilograms) {
this.weightInKilograms =weightInKilograms;
}
public double getHeightInMeters() {
return heightInMeters;
}
public void setHeightInMeters(doubleheightInMeters) {
this.heightInMeters =heightInMeters;
}
}
3.配置文件SQLMapConfig.xml
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//iBATIS.com//DTD SQL Map Config2.0//EN"
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<properties resource="com/ibeats/db.properties"/>
<settings
cacheModelsEnabled="true"
enhancementEnabled="true"
lazyLoadingEnabled="true"
maxRequests="32"
maxSessions="10"
maxTransactions="5"
useStatementNamespaces="false"
/>
<transactionManager type="JDBC">
<dataSourcetype="SIMPLE">
<propertyname="JDBC.Driver" value="${driver}"/>
<propertyname="JDBC.ConnectionURL" value="${url}"/>
<propertyname="JDBC.Username" value="${user}"/>
<propertyname="JDBC.Password" value="${password}"/>
</dataSource>
</transactionManager>
<sqlMapresource="com/ibeats/Person.xml" />
</sqlMapConfig>
(文件元素說明:
resource:屬性列表配置文件,以便用於數據庫連接參數設置。
settings:
cacheModelsEnabled:數據高速緩存,提高程序性能,利用LRU(最近最久未使用)方法對使用過的數據保存在內存中。默認true
enhancementEnabled:指定是否用cglib中那些已優化的類來提高延遲加載的性能。默認ture
lazyLoadingEnabled:延遲加載,除非絕對需要,否則推遲加載的技術。默認true
maxRequests(已廢棄):一次最多有多少個請求,默認爲512
maxSessions(已廢棄):任何時候只允許會話數,默認128
maxTransactions(已廢棄):事務最大數目,默認32
useStatementNamespaces:在引用已映射語句時,是否需要使用限定名。默認false
transactionManager:處理所有的數據庫事務。
dataSoutce:數據源工廠
property:配置項
sqlMap:配置SQLMAP文件
typeAlias:定義別名)
4.配置文件person.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="Person">
<!-- Use primitive wrapper type(e.g. Integer) as parameter and allow results to
be auto-mapped results to Person object (JavaBean) properties -->
<select id="getPerson"parameterClass="int"resultClass="com.ibeats.Person">
SELECT PER_ID as id,
PER_FIRST_NAME asfirstName,
PER_LAST_NAME aslastName,
PER_WEIGHT_KG asweightInKilograms,
PER_HEIGHT_M asheightInMeters
FROM PERSON
WHERE PER_ID = #id#
</select>
</sqlMap>
(文件元素說明:
parameterClass:傳入參數
resultClass:傳出參數
)
5.數據庫配置文件db.properties
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@127.0.0.1:1521:ORACLEXC
user=scott
password=tiger
6.測試類SqlMapClient.java
package com.ibeats;
import com.ibatis.sqlmap.client.*;
import com.ibatis.common.resources.*;
import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.List;
public class SqlMapClient {
public static void main(String args[]) {
try {
com.ibatis.sqlmap.client.SqlMapClientsqlMap = null;
String resource ="com/ibeats/SQLMapConfig.xml";
Reader reader =Resources.getResourceAsReader (resource);
sqlMap =SqlMapClientBuilder.buildSqlMapClient(reader);
Person person=(Person)sqlMap.queryForObject("getPerson",new Integer(1));
System.out.println(person.getFirstName()); //打印
} catch (IOException e) {
e.printStackTrace();
} catch (SQLException e1){
e1.printStackTrace();
}
}
}
(說明:
queryForObject():獲取一條記錄。
queryForList():返回一行或多行,可用參數返回固定幾行,可用分頁。
)
大家只要改下數據庫代碼就可以在自己機器上運行了!
注意:數據庫的列名是as 前面的。