어떤것이든지 일단 프로그램 돌려보고 화면이나 결과가 나와야 할 맛이 난다.
iBatis In Action 책에 나오는 첫번째 세상에서 가장 간단한 예제 따라서 코딩해봤다.
클래스 패스에 넣은 jar는 ibatis-2.3.0.677.jar, mysql-connector-java-5.0.6-bin.jar 두개뿐이다.
실행의 편이성을 위해 패키지 지정 안했다.
==================== Main.java ========================
public class Main {
/**
* @param args
*/
public static void main(String[] args)throws Exception {
// TODO Auto-generated method stub
SqlMapClient sqlMap;
String resource = "sqlMapConfig.xml";
Reader reader = Resources.getResourceAsReader(resource);
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
Map<String,String> map = new HashMap<String, String>();
map.put("firstName","uncle");
map.put("lastName","joe");
map.put("updateName","Mark");
map.put("actorId",(String)sqlMap.queryForObject("selectMaxActorId"));
List list = sqlMap.queryForList("getActor", map);//(List)map.get("FIRST_NAME");
System.out.println("Selected " + list.size() + " records."+map);
int ii = sqlMap.update("updateUser", map);
System.out.println("updateUser::::"+ii);
//sqlMap.insert("insertUser", map);
//System.out.println("ddddddd::"+se.);
//sqlMap.queryForMap("getActor", map, "ACTOR");// .queryForList("getActor", map);//(List)map.get("FIRST_NAME");
list = sqlMap.queryForList("getAllActor", map);//(List)map.get("FIRST_NAME");
System.out.println("Selected " + list.size() + " records.");
for(int i=0;i<list.size();i++) {
System.out.println(":::"+list.get(i));
}
}
=============== sqlMapConfig.xml ===============
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
==> 이것도 옵션
<settings cacheModelsEnabled="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="com.mysql.jdbc.Driver"/>
<property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost:3306/test"/>
<property name="JDBC.Username" value="loginUser"/>
<property name="JDBC.Password" value="usrPassword"/>
<!--OPTIONAL PROPERTIES BELOW -->
<!-- property name="Pool.MaximumActiveConnections" value="10"/>
<property name="Pool.MaximumIdleConnections" value="5"/>
<property name="Pool.MaximumCheckoutTime" value="120000"/>
<property name="Pool.TimeToWait" value="10000"/>
<property name="Pool.PingQuery" value="select * from dual"/>
<property name="Pool.PingEnabled" value="false"/>
<property name="Pool.PingConnectionsOlderThan" value="0"/>
<property name="Pool.PingConnectionsNotUsedFor" value="0"/-->
</dataSource>
</transactionManager>
<!--Identify all SQL Map XML files to be loaded by this SQL map. Notice the paths
are relative to the classpath. For now, we only have one… -->
<sqlMap resource="sqlMap.xml" />
</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">
<sqlMap>
<select id="getActor" resultClass="hashmap">
select * from ACTOR
where FIRST_NAME = #firstName#
AND LAST_NAME = #lastName#
</select>
<select id="getAllActor" resultClass="hashmap">
select * from ACTOR
where LAST_NAME = #updateName#
</select>
<select id="selectMaxActorId" resultClass="int">
select MAX(ACTOR_ID) AS ACTOR_ID from ACTOR
where FIRST_NAME = #firstName#
</select>
<insert id="insertUser">
INSERT INTO ACTOR (FIRST_NAME, LAST_NAME)
VALUES (
#firstName#, #lastName#
)
</insert>
<update id="updateUser">
UPDATE ACTOR
SET LAST_NAME = #updateName#
WHERE ACTOR_ID = #actorId#
</update>
</sqlMap>
=============================
요렇게 해놓구 eclipse에서 실행했는데....
=================== 결과 ===================
Selected 12 records.{lastName=joe, updateName=Mark, actorId=null, firstName=uncle}
updateUser::::0
Selected 2 records.
:::{first_name=uncle, last_update=2007-07-27 19:59:46.0, actor_id=213, last_name=Mark}
:::{first_name=uncle, last_update=2007-07-27 20:01:24.0, actor_id=214, last_name=Mark}
요렇게 나온다....