การ select ข้อมูลออกมาจาก Database
Person person = (Person)sqlMap.queryForObject(”getPerson”, 1);ถ้าอยากจะ update ก็แค่นี้
person.setFirstName(”Jack Sparrow”);หรือถ้าต้องการลบก็ทำแบบนี้เท่านั้น
sqlMap.update(”updatePerson”, person);
sqlMap.delete(”deletePerson”, person);ซึ่งก่อนกที่เราจะทำอะไรได้อย่างที่บอกมา เราก็ต้อง configure ค่าๆต่างๆตามขั้นตอนที่จะว่าต่อไปนี้ก่อน
โดยการใช้ iBatis อย่างง่ายนั้น มีขั้นตอนหลักอย่างง่ายๆ 4 ขั้นตอน กับ 4 ไฟล์ที่จะมาเกี่ยวข้อง คือ
- สร้าง class ในลักษณะของ JavaBean pattern
- configure ข้อมูลต่างๆที่จะใช้ติดต่อกับ DBMS
- กำหนด operation ต่างๆที่เราจะใช้งาน
- เรียกใช้งาน operation ที่เราได้สร้างขึ้น
CREATE TABLE PERSON(หลังจากตารางพร้อม เราก็มาดูที่ขั้นแรกกันเลย
ID integer(5) NOT NULL,
FIRST_NAME VARCHAR (40) NOT NULL,
LAST_NAME VARCHAR (40) NOT NULL,
BIRTH_DATE DATE ,
WEIGHT decimal (4, 2) NOT NULL,
HEIGHT decimal(4, 2) NOT NULL,
PRIMARY KEY (ID)
)
1. เราจะสร้าง class ชื่อ Person สำหรับใช้ส่งข้อมูลกันไปมา ในขณะที่เราทำ operation ต่างๆ หน้าตาแบบนี้
2. เมื่อ class ที่เราจะใช้พร้อมแล้ว ต่อไป ก็คือ mapping ข้อมูลต่างๆที่จำเป็นต่อการเชื่อต่อกับ DBMS (ในที่นี้ใช้ MySQL) โดยสร้าง XML ไฟล์ขึ้นมา ในตัวอย่างนี้ใช้ชื่อว่า SQLMapConfig.xmlpublic class Person {private int id;private String firstName;private String lastName;private Date birthDate;private double weight;private double height;… // อย่าลืม implement set/get method สำหรับ property แต่ละตัวด้วย
}
จากนั้นเขียนในส่วน proleg ของ xml ว่า
<?xml version=”1.0″ encoding=”UTF-8″ ?>อย่าลืมประกาศ DOCTYPE ให้ถูกต้องด้วย
<!DOCTYPE sqlMapConfig
PUBLIC “-//ibatis.apache.org//DTD SQL Map Config 2.0//EN”
“http://ibatis.apache.org/dtd/sql-map-config-2.dtd”>
จากนั้นสร้าง root element ชื่อ sqlMapConfig และสร้าง element ชื่อ transactionManager ลงในเป็น child ของ sqlMapConfig เพื่อ configure ค่าต่างๆที่จำเป็นในการติดต่อกับ MySQL ในลักษณะนี้
<transactionManager type=”JDBC”><dataSource type=”SIMPLE”><property name=”JDBC.Driver” value=”com.mysql.jdbc.Driver”/><property name=”JDBC.ConnectionURL” value=”jdbc:mysql://localhost:3306/ibatis”/><property name=”JDBC.Username” value=”root”/><property name=”JDBC.Password” value=”"/></dataSource></transactionManager>
<!– กำหนด resource ไปที่ไฟล์ Person.xml ด้วย (จะอธิบายต่อไปว่าใช้ทำอะไร) –>
<sqlMap resource=”testibatis/Person.xml”/>3. กำหนด operation ต่างๆที่เราจะเอามาใช้งาน โดยเราจะกำหนด operation ต่างๆไว้ในไฟล์ xml ในที่นี้ให้ชื่อว่า Person.xml
เริ่มจากกำหนดส่วน prolog ของ xml ให้ถูกต้องแบบนี้
<?xml version=”1.0″?>สร้าง root element ชื่อ sqlMap พร้อมทั้งกำหนดค่าให้ attribute ชื่อ namespace ว่า Person แบบนี้
<!DOCTYPE sqlMap
PUBLIC “-//ibatis.apache.org//DTD SQL Map 2.0//EN”
“http://ibatis.apache.org/dtd/sql-map-2.dtd”>
<sqlMap namespace=”Person”>
จากนี้เราก็กำหนด operation ต่างๆได้ตามชอบใจได้เลย เช่น operation สำหรับการ insert ข้อมูลลงใน Database เราจะใช้ tag ชื่อ insert ดังนั้นก็จะได้ว่า
</sqlMap>
<insert id=”insertPerson” parameterClass=”domain.Person”>เราจะเห็นว่าค่าที่อยู่ระหว่าง <insert> นั้นจริงๆมันก็คือ SQL นั่นเอง เพียงแต่มีเรื่องของค่าที่เราจะส่งเข้ามาด้วยเท่านั้นเอง ซึ่งเราจะใช้ # ครอบตัวแปรนั้นๆไว้
INSERT INTO PERSON (id, first_name, last_name, birth_date, weight, height)
VALUES (#id#, #firstName#, #lastName#, #birthDate#, #weight#, #height#)
</insert>
เมื่อรู้อย่างนี้แล้ว ก็ทำแบบเดียวกันกับ operation อื่นๆ ก็คือ
ถ้าจะ select เราจะใช้ <select> ส่วนถ้าจะ update ก็ใช้ <update> และจะ delete ก็ใช้ <delete> นั่นเอง เช่นตัวอย่างต่อไปนี้
<select id=”getPerson” resultClass=”domain.Person”>
SELECT
ID as id,
FIRST_NAME as firstName,
LAST_NAME as lastName,
BIRTH_DATE as birthDate,
WEIGHT as weight,
HEIGHT as height
FROM PERSON
WHERE ID = #id#
</select>
<update id=”updatePerson” parameterClass=”domain.Person”>
UPDATE PERSON
SET FIRST_NAME=#firstName#,
LAST_NAME=#lastName#,
WEIGHT=#weight#,
HEIGHT=#height#
WHERE ID=#id#
</update>
<delete id=”deletePerson” parameterClass=”domain.Person”>
DELETE FROM PERSON
WHERE ID=#id#
</delete>
สำหรับ tag ของ operation แบบต่างๆที่ว่ามาตอนแรกนั้น จะมี attribute ชื่อ parameterClass และ resultClass ติดอยู่ด้วย ซึ่งนั่นก็คือเป็นการบอกว่า เราจะส่ง object ของ class อะไรเข้าไป และมันะ return object ของ class ไหนออกมานั่นเอง ดังนั้นเราจำเป็นจะต้องกำหนด class ให้สอดคล้องกับข้อมูลที่เราใช้งานด้วย
4. ขั้นตอนสุดท้าย หลังจากที่เรา สร้าง Bean กำหนดค่าสำหรับติดต่อกับ Database และกำหนด operation ต่างๆเสร็จเรียบร้อยแล้ว จากนี้ก็ถึงขั้นตอนของการนำมาใช้งานล่ะ ซึ่งการใช้งานก็ตรงไปตรงมาแบบนี้ได้เลยครับ
ขั้นแรกเริ่มจากการสร้าง object ของ SqlMapClient ก่อน แบบนี้
String resource = “testibatis/SQLMapConfig.xml”;เมื่อได้ object ของ SqlMapClient มาแล้ว ต่อไปนี้อะไรๆก็ง่ายแล้วครับ
Reader reader = Resources.getResourceAsReader(resource);
SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
เรามาลองใช้ operation ต่างๆที่ได้สร้างไว้กันเลย
เริ่มจากการทดสอบการใช้งาน insertPerson ที่เราได้กำหนดไว้ในไฟล์ Person.xml แบบนี้
Person p = new Person();ทดสอบการใช้งาน getPerson แบบนี้
p.setId(100);
p.setFirstName(”Devy”);
p.setLastName(”Jones”);
p.setBirthDate(new Date());
p.setWeight(30.4);
p.setHeight(165.5);
sqlMap.insert(”insertPerson”, p);
Person person = (Person)sqlMap.queryForObject(”getPerson”, 1);ถ้าจะ update ก็ทำกับ object ของ Person ที่เรามีแบบนี้ และสั่ง update
person.setFirstName(”Jack Sparrow”);ส่วนถ้าต้องการลบ object ของ Person ก็สั่งมันไปตรงๆแบบนี้ได้เลย
sqlMap.update(”updatePerson”, person);
sqlMap.delete(”deletePerson”, person);และสุดท้าย สำหรับไฟล์ SqlMapConfig.xml นั้นเรายัง configure อะไรได้มากกว่าที่ได้บอกไว้ก่อนหน้านี้ครับ เช่น
<settingsสำหรับความสามารถอื่นๆของ iBatis นั้น ตามไปอ่านต่อได้ที่ http://ibatis.apache.org/
cacheModelsEnabled=”true”
enhancementEnabled=”true”
lazyLoadingEnabled=”true”
maxRequests=”32″
maxSessions=”10″
maxTransactions=”5″
useStatementNamespaces=”false”
/>
Related Link from Roti







ปกติข้อมูลที่อยู่ใน
ลักษณะก็จะคล้ายๆกับ MOLAP แต่จะต่างกันตรงที่ว่า 










