Java Reference
In-Depth Information
layer. The service layer should always interact with the DAO interface and be free of
any DAO implementations. This case is no different, as you can see here:
public interface ProductDao {
PaginatedList getProductListByCategory(
String categoryId);
We have a ProductDao interface that will be used by the CatalogService class.
Since CatalogService interacts with the ProductDao interface, it doesn't care
about the actual implementation. On our ProductDao , we need to define a get-
ProductListByCategory method that CatalogService is able to take advantage of.
The return type is PaginatedList and the method signature consists of a catego-
ryId of type String:
public class ProductSqlMapDao
extends BaseSqlMapDao
implements ProductDao {
public ProductSqlMapDao(DaoManager daoManager) {
public PaginatedList getProductListByCategory(
String categoryId
) {
return queryForPaginatedList(
categoryId, PAGE_SIZE);
The implementation of the ProductDao will be the ProductSqlMapDao , which is
located in the org.apache.ibatis.jgamestore.persistence.sqlmapdao package. Prod-
uctSqlMapDao extends BaseSqlMapDao , and in turn BaseSqlMapDao extends SqlMap-
DaoTemplate . SqlMapDaoTemplate is a base i BATIS SQLMap class; this class contains
methods that are used to call the SQL that is defined in the SQLMap XML files. We
will use the queryForPaginatedList method in the body of the getProductListBy-
Category method implementation on the ProductSqlMapDao class. When we call
queryForPaginatedList we pass in the namespace and the statement name we
want to call (i.e., Product.getProductListByCategory ), the categoryId that we are
querying against, and the page size that we want the returned list to represent.
Search WWH ::

Custom Search