这篇文章介绍了iBATIS的SQL Map的简单例子。它是一个免费的开放源代码软件。
具有以下优点:
10、知道怎样操作10种以上的数据库
9 、可配置的caching(包括从属)
8、支持DataSource、local transaction managemen和global transaction
7、简单的XML配置文档
6、支持Map, Collection, List和简单类型包装(如Integer, String)
5、支持JavaBeans类(get/set 方法)
4、支持复杂的对象映射(如populating lists, complex object models)
3、对象模型从不完美(不需要修改)
2、数据模型从不完美(不需要修改)
1、你已经知道SQL,为什么还要学习其他东西
resultClass="examples.domain.Address">
select
ADR_ID as id,
ADR_DESCRIPTION as description,
ADR_STREET as street,
ADR_CITY as city,
ADR_PROVINCE as province,
ADR_POSTAL_CODE as postalCode
from ADDRESS
where ADR_ID = #value#
我怎样用Java执行它呢?
/*
* 以下几行代码在以上的语句中将integer 5 传递给#value#参数,来执行映射语句。
*/
Integer pk = new Integer(5);
Address address = (Address)sqlMap.queryForObject("getAddress", pk);
//提示:查看JPetStore 4,它使用了许多的新的特性,它是一个完整的应用实例。同时也有详尽开发指南的完整的文档。
//更多的例子请看下面。
insert into ADDRESS (
ADR_ID,
ADR_DESCRIPTION,
ADR_STREET,
ADR_CITY,
ADR_PROVINCE,
ADR_POSTAL_CODE)
values (
#id#,
#description#,
#street#,
#city#,
#province#,
#postalCode#)
//执行这个插入语句就像执行一个查询语句一样方便。
//executeUpdate()方法被用于插入,更新和删除。
Address address = new Address();
address.setId(15);
address.setDescription("Bob's Comic Book Store");
address.setStreet ("16 Somestreet");
...
sqlMap.insert ("insertAddress", address);
resultClass="examples.domain.Product">
select
PRD_ID as id,
PRD_CATEGORY as category,
PRD_DESCRIPTION as description,
PRD_RETAIL as retail,
PRD_QUANTITY as quantity
from PRODUCT
where PRD_CATEGORY = #value#
//为一个“dog”类目中获得一个产品列表执行以上语句,就像这样那么简单:
String category = "dog";
List productList = sqlMap.queryForList("getProductByCategory", category);
//太多的结果?那么 完全可导航、惰性加载(lazy-loaded)、用JavaBean来分页列出产品、
//在jsp页面中的易用性 怎么样呢?一页10个行吗?
PaginatedList productList = sqlMap.queryForList("getProductByCategory",
category,
10);
productList.nextPage();
productList.previousPage();
productList.isNextPageAvailable();// etc.
//需要一个来自相同查询的产品ID和描述的映射?
Map descriptionMap = sqlMap.queryForMap ("getProductByCategory",
category,
"id",
"description");
resultClass="examples.domain.Employee">
SELECT
emp_id as id,
emp_number as employeeNumber,
emp_first_name as firstName,
emp_last_name as lastName,
emp_dept_code as departmentCode
FROM employee
START WITH emp_id = #value#
CONNECT BY PRIOR emp_manager_id = emp_id;
Integer managerId = new Integer(15);
List employeeList = sqlMap.queryForList("getEmployeesByManagerRecursively",
managerId);