先來看看本篇用的實體物件 Book
import org.pojo.Book public class Book{ private int id; private String bookName; private String bookPrice; private String category //other getter and setter... }
首先先來看 "Create",以下是一個在映射檔中的簡單 INSERT 寫法
<insert id="insertBook" parameterClass="org.pojo.Book">
INSERT INTO
t_book (ID, BOOK_NAME, BOOK_PRICE, BOOK_CATE)
VALUES (#id#, #bookName#, #bookPrice#, #category#)
</insert>
透過 insert 標籤,其 parameterClass 為欲新增的 Book 實體物件
在 # 字號中間的值,最後會被替換成 Book 這個類別所對應到的屬性
所以須跟一開始定義的 Book 類別的屬性相對應
接下來看看 "Read",以下是一個 SELECT 的寫法
<select id="getBook" parameterClass=”int” resultClass="org.pojo.Book">
SELECT
ID AS id,
BOOK_NAME AS bookName,
BOOK_PRICE AS bookPrice,
BOOK_CATE AS category
WHERE id = #value#
</select>
注意以上的寫法如果要讀取出所有欄位可以用 * 字號
但是如果只要特定欄位時,在 SQL 語法中的 AS 後面接的即是 Book 這個類別的屬性名
如果寫錯了,譬如將以上的 bookName 寫成 name,那嚜之後 Book 實體物件
要撈出書名時 透過 Book 物件的 getBookName() 方法得出來的會是 null
當然如果你資料表的欄位名稱跟實體物件的屬性名稱一樣時,就可以不用 AS 語法了
接下來看看 "Update",以下是一個 UPDATE 的典型寫法
<update id="updateBook" parameterClass="org.pojo.Book">
UPDATE t_book
SET
BOOK_NAME = #bookName#,
BOOK_PRICE = #bookPrice#,
BOOK_CATE = #category#
WHERE ID = #id#
</update>
以上的#字號用法和意義跟 INSERT 時為同樣的道理
如果#字號內的值無法對應到 Book 類別的屬性時會發生錯誤
接下來看看 "Delete",以下是一個 DELETE的寫法
<delete id="deleteBook" parameterClass="org.pojo.Book">
DELETE t_book
WHERE ID = #id#
</delete>
看完了以上的操作
接下來就介紹 SqlMapClient 的幾個比較常用的 CRUD 方法
1. 從資料庫中讀取資料,以指定 主鍵的方式
Book book = (Book) sqlMap.queryForObject (“getBook”, new Integer(1));
2. 新增資料到資料庫中
Book book = new Book();
book.setId(1);
book.setBookName("Enjoy Java");
book.setBookPrice("$ 200");
book.setCategory("Program");
sqlMap.insert("insertBook", book);
3. 更新資料表中的某筆資料
Book book = (Book) sqlMap.queryForObject (“getBook”, new Integer(1));
book.setBookName("Enjoy J2EE");
book.setBookPrice("$ 400");
sqlMap.update("updateBook", book);
4. 刪除某筆資料
Book book = (Book) sqlMap.queryForObject (“getBook”, new Integer(1));
sqlMap.delete("deleteBook", book);
沒有留言:
張貼留言