有別於JPA等ORM產品,iBATIS是直接把SQL Mapping作為一組input/output,而SQL字串則定義在XML檔。對全新專案開發時可能不是最佳選擇,但對中小型專案全新開發,或是接手舊系統的維護卻是比JPA較好的選擇。
iBATIS下載是自Apache網站,目前最新版本2.3.3.720,只需引進一個Jar檔(當然還要有應對的JDBC Driver)。
和JPA類似的,config檔似乎比程式還要吃重。
SqlMapConfig.xml (不一定叫這個名字)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<transactionManager type="JDBC">
<dataSource type="SIMPLE"> <!-- 設定 DataSource,亦可取得DBCP或JNDI -->
<property value="com.mysql.jdbc.Driver" name="JDBC.Driver"/>
<property value="jdbc:mysql://localhost/test" name="JDBC.ConnectionURL"/>
<property value="root" name="JDBC.Username"/>
<property value="systex" name="JDBC.Password"/>
</dataSource>
</transactionManager>
<transactionManager type="JDBC">
<dataSource type="SIMPLE"> <!-- 設定 DataSource,亦可取得DBCP或JNDI -->
<property value="com.mysql.jdbc.Driver" name="JDBC.Driver"/>
<property value="jdbc:mysql://localhost/test" name="JDBC.ConnectionURL"/>
<property value="root" name="JDBC.Username"/>
<property value="systex" name="JDBC.Password"/>
</dataSource>
</transactionManager>
<sqlMap resource="sqlMap.xml"/> <!-- Reference到SQL字串設定檔,也不一定是這個檔名 -->
</sqlMapConfig>
SqlMap.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap>
<select id="getAllUsers" parameterClass="string" resultClass="hashmap">
SELECT * FROM USER_ACCOUNT WHERE GROUPNAME = #groupName#
</select>
</sqlMap>
<select id="getAllUsers" parameterClass="string" resultClass="hashmap">
SELECT * FROM USER_ACCOUNT WHERE GROUPNAME = #groupName#
</select>
</sqlMap>
Main.java測試主程式
import com.ibatis.sqlmap.client.*;
import com.ibatis.common.resources.Resources;
import com.ibatis.common.resources.Resources;
import java.io.Reader;
import java.util.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
String resource = "./sql-map-config.xml";
Reader reader = Resources.getResourceAsReader(resource);
SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
List list = sqlMap.queryForList("getAllUsers", "EMPLOYEE"); // 對映到SqlMap.xml的getAllUsers
System.out.println("Selected " + list.size() + " records!");
for (int i=0; i<list.size(); i++) {
System.out.println(list.get(i));
}
Map accountMap = sqlMap.queryForMap("getAllUsers", "EMPLOYEE", "USERID");
System.out.println(accountMap.toString());
accountMap = sqlMap.queryForMap("getAllUsers", "EMPLOYEE", "USERID", "GROUPNAME");
System.out.println(accountMap.toString());
}
}
public static void main(String[] args) throws Exception {
String resource = "./sql-map-config.xml";
Reader reader = Resources.getResourceAsReader(resource);
SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
List list = sqlMap.queryForList("getAllUsers", "EMPLOYEE"); // 對映到SqlMap.xml的getAllUsers
System.out.println("Selected " + list.size() + " records!");
for (int i=0; i<list.size(); i++) {
System.out.println(list.get(i));
}
Map accountMap = sqlMap.queryForMap("getAllUsers", "EMPLOYEE", "USERID");
System.out.println(accountMap.toString());
accountMap = sqlMap.queryForMap("getAllUsers", "EMPLOYEE", "USERID", "GROUPNAME");
System.out.println(accountMap.toString());
}
}
全站熱搜