?
?
1.查詢
(1)聯合查詢:使用一個sql查詢
(2)子查詢:對于每個表使用一個sql查詢
基本的原則是,如果您需要訪問相關的對象,則使用聯合查詢。否則,使用延遲加載和字節碼增強選項的子查詢。
?
2.配置文件分析
?<resultMap id="UserResult" class="User">
??<result property="id" column="id"/>
??<result property="name" column="name"/>
??<result property="sex" column="sex"/>
??<result property="addresses" column="id" select="selectAddressByUserId"/>
?</resultMap>
?
使用的preparedstatement來處理sql,得到記錄,如何設置對象
?a. user.setId(id)? -->id:? column
?b. 如果有select屬性,則column 作為查詢條件插入
?
?
?
?
3.集合
讓SQL Map架構裝入復雜類型集合(List)的業務對象的屬性必須是java.util.List或java.util.Collection類型。?
為什么set,hashset報錯???
?
4.
重要提示!目前SQL Map架構無法自動解決resultMap之間的雙向關系。這在處理“父/子” 雙向關系的resultMap時尤其要注意。
一個簡單的辦法是,為其中一種情況再定義一個不裝入父對象的resultMap(反之亦然)。
?
?
代碼例子
例子1:執行update(insert,update,delete)
sqlMap.startTransaction();
Product product = new Product();
product.setId (1);
product.setDescription (“Shih Tzu”);
int rows = sqlMap.insert (“insertProduct”, product);
sqlMap.commitTransaction();
例子2:查詢成對象(select)
sqlMap.startTransaction();
Integer key = new Integer (1);
Product product = (Product)sqlMap.queryForObject (“getProduct”, key);
sqlMap.commitTransaction();
例子3:用預賦值的結果對象查詢成對象(select)
sqlMap.startTransaction();
Customer customer = new Customer();
sqlMap.queryForObject(“getCust”, parameterObject, customer);
sqlMap.queryForObject(“getAddr”, parameterObject, customer);
sqlMap.commitTransaction();
例子4:查詢成對象List(select)
sqlMap.startTransaction();
List list = sqlMap.queryForList (“getProductList”, null);
sqlMap.commitTransaction();
例子5:自動提交
//當沒調用startTransaction的情況下,statements會自動提交。
//沒必要commit/rollback。
int rows = sqlMap.insert (“insertProduct”, product);
例子6:用結果集邊界查詢成對象List(select)
sqlMap.startTransaction();
List list = sqlMap.queryForList (“getProductList”, null, 0, 40);
sqlMap.commitTransaction();
例子7:用RowHandler執行查詢(select)
public class MyRowHandler implements RowHandler {
public void handleRow (Object object, List list) throws SQLException {
Product product = (Product) object;
product.setQuantity (10000);
sqlMap.update (“updateProduct”, product);
// Optionally you could add the result object to the list.
// The list is returned from the queryForList() method.
}
}
sqlMap.startTransaction();
RowHandler rowHandler = new MyRowHandler();
List list = sqlMap.queryForList (“getProductList”, null, rowHandler);
sqlMap.commitTransaction();
例子8:查詢成Paginated List(select)
PaginatedList list =
sqlMap.queryForPaginatedList (“getProductList”, null, 10);
list.nextPage();
list.previousPage();
例子9:查詢成Map(select)
sqlMap.startTransaction();
Map map = sqlMap.queryForMap (“getProductList”, null, “productCode”);
sqlMap.commitTransaction();
Product p = (Product) map.get(“EST-93”);
?