[Internship@True]วันที่ 16

วันนี้ผมก็นั่งทำในส่วนหน้าที่ 2 ต่อไป และศึกษาเพิ่มเติมในส่วนของ iBatis framework ซึ่งก็เป็น framework ที่ทำหน้าที่ในการจัดการฐานข้อมูล ซึ่งในตอนแรกๆผมก็ลืมบอกไป ฮ่าๆ โดยเมื่อเรา config ค่าต่างๆแล้วเราก็จะมา mapping กับ sql โดยการเขียนในรูปแบบภาษา xml ซึ่งเท่าที่อ่านดู xml จะเป็นตัวล่ามระหว่าง Class ของตาราง ซึ่ง 1 ตารางก็จะมี 1 Class เท่านั้น และตารางจริงๆในฐานข้อมูล โดยจะเก็บในส่วน Tag resultMap

<resultMap id="MonthResultMap" class="com.rmv.mdr.dataaccess.bean.MdInboundauditReporttstv01DB" >
 <result column="DATE_PROCESSED" property="dateProcessed" jdbcType="TIMESTAMP" />
 <result column="TRANSMITTED" property="transmitted" jdbcType="DECIMAL" />
 <result column="RECEIVED" property="received" jdbcType="DECIMAL" />
</resultMap>

แต่จากปัญหาตรงนี้ก็จะมีข้อจำกัดที่ว่า column ของ ตาราง กับ property ของ Class ต้องสัมพันธ์กันได้ ซึ่งถ้าใช้ SQL ด้านล่าง ก็ทำMapping ได้

SELECT Date_Processed, max(Transmitted) FROM MD_INBOUND

แต่ถ้าใช้ SQL อีกแบบด้านล่าง กว่าจะ mapping ได้ก็ต้องแก้ Class ของตารางแทน แต่มันจะผิดกับข้อกำหนดในเว็บที่ศึกษา (หรือ เราอาจจะยังศึกษาไม่พอก็ได้)

SELECT Date_Processed, max(Transmitted), avg(Transmitted), min(Transmitted) FROM MD_INBOUND

ส่วนวิธีแก้มันก็มีหลายแบบ ได้แก่ การดึงข้อมูลมาทั้งหมด แล้วทำเป็นฟังค์ชั่นไว้ใช้ กับแยก SQL ออกมาให้มัน mapping ได้ ซึ่งอาจจะมีวิธีอื่น แต่ผมอาจจะคิดไม่ถึงก็ได้ แต่ในตอนนี้ผมก็เลือกใช้การแยก SQL ออกมาเป็น 3 Statement แทนเพราะมีการแก้ Code ที่น้อย ดังนี้

SELECT Date_Processed, max(Transmitted) FROM MD_INBOUND
SELECT Date_Processed, avg(Transmitted) FROM MD_INBOUND
SELECT Date_Processed, min(Transmitted) FROM MD_INBOUND

และในที่สุดก็สามารถที่จะปรับปรุงการทำงานให้เสร็จได้ในตอนเย็น ทันเวลาเลิกงานพอดี 😀


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts to your email.