Spring宠物商店学习笔记(一) -

一、概述

JPetStore示例是一个宠物店示例,它一直依赖都被作为各种框架实现的示例程序,因此具有很好的研究价值。Spring发布包中的JPetstore示例使用了iBatis作为数据访问对象层,同时提供了多种数据源的实现版本,如Oracle、MS-SQL、MySQL、PostgreSQL。Jpetstore的业务层由Spring托管,其中也展示了Spring的事务管理功能。此外JPetstore在Web层也给出了Spring WebMVC和Struts版本的分别实现,很有参考价值。


二、本地安装示例

1、先下载Spring完整的发布包,然后解压。

2、在dos命令下进入示例目录,如spring-framework-2.0.8\samples\jpetstore。

3、运行ant build脚本。(需安装ant,版本要求见示例的readme文件)

4、将spring-framework-2.0.8\samples\jpetstore\dist新生成的jpetstore.war包发布到web容器中。

5、启动tomcat容器。

6、修改jdbc.properties配置文件,目的是适应自己本地的数据库。(在发布目录中对应war包名称的文件夹中,如apache-tomcat-5.5.23\webapps\jpetstore\WEB-INF)。

7、将本地数据库对应的jar包拷贝到WEB-INF\lib目录下。

8、启动本地数据库,执行示例的数据库应用脚本。(本人使用的是mysql数据库)

9、重新启动tomcat服务器。

10、访问示例。


三、




(一)、包的命名及其划分(包:用来封装最小可独立发布的模块)

1、dao包:存放用于处理数据持久层的接口。(注意异常的声明:org.springframework.dao.DataAccessException)

2、dao.ibatis包:存放用于处理数据持久层的接口的具体ibatis实现。(继承org.springframework.orm.ibatis.support.SqlMapClientDaoSupport类)

3、dao.ibatis.maps包:存放持久化对象对应的iBatis配置文件。

4、domain(域)包:存放应用中用到的对象。

5、domain.logic包:存放该业务的逻辑类。

6、service包:

7、service.client包:

8、web.spring包:存放UI层用到的Spring MVC框架 的Form和Controller。

9、web.struts包:存放UI层用到的Struts框架的From和Action。


相关配置及其属性文件。(applicationContext.xml 、dataAccessContext-local.xml、jdbc.properties、mail.properties、log4j.properties、sql-map-config.xml)


(二)涉及对象(domain)

1、Account:帐户对象。(account、signon、profile)

2、Cart:购物车对象。(包含部分业务方法)

3、CartItem:

4、Category:种类、类别对象。(category)

5、Item:项目,条款。(item、inventory)

6、LineItem:(lineitem)

7、Order:订单对象。(orders)

8、Product:产品对象。(product)


(三)涉及实体(数据库表)

1、supplier表:供应商表(id、名字、状态、地址1、地址2、城市、州、邮编、电话) 2、signon表:登陆信息表(用户名、密码)3、account表:用户信息表(userid、email、名、姓、地址1、地址2、城市、州、邮编、国家、电话) 4、profile表:用户简介表(userid、优先语言、喜爱的类别、我的列表开启选项、横幅开启选项) 5、bannerdata表:横幅数据表(喜爱的类别、横幅名称) 6、orders表:订单表(orderid、userid、订单日期、配送地址1、配送地址2、配送城市、配送州、配送邮编、配送国家、帐单地址1、帐单地址2、帐单城市、帐单州、帐单邮编、帐单城市、服务人员、总价钱、收帐单人的名、收帐单人的姓、收邮件人的名、收邮件人的姓、银行卡号、快递日期、卡的类别、本地信息) 7、orderstatus表:订单状态表(orderid、linenum、时间、状态) 8、lineitem表:订单明细表(orderid、linenum、itemid,数量、单价) 9、category表:类别表(catid、名称、描述) 10、product表:商品表(productid、类别(外键)、名称、描述) 11、item表:具体产品项表(itemid、productid(外)、批发价、零售价、供应商(外)、状态、备注1、备注2、备注3、备注4、备注5) 12、inventory表:库存表(itemid、数量)
13、sequence表:序列表(序列名、nextid)


(四)数据层的实现

1、接口的设计(org.springframework.dao.DataAccessException)

AccountDao Account getAccount(String username) throws DataAccessException; Account getAccount(String username, String password) throws DataAccessException; void insertAccount(Account account) throws DataAccessException; void updateAccount(Account account) throws DataAccessException;
List getUsernameList() throws DataAccessException;

CategoryDao

List getCategoryList() throws DataAccessException;
Category getCategory(String categoryId) throws DataAccessException;

ItemDao

public void updateQuantity(Order order) throws DataAccessException; boolean isItemInStock(String itemId) throws DataAccessException; List getItemListByProduct(String productId) throws DataAccessException;
Item getItem(String itemId) throws DataAccessException;

OrderDao

List getOrdersByUsername(String username) throws DataAccessException; Order getOrder(int orderId) throws DataAccessException;
void insertOrder(Order order) throws DataAccessException;

ProductDao

List getProductListByCategory(String categoryId) throws DataAccessException; List searchProductList(String keywords) throws DataAccessException;
Product getProduct(String productId) throws DataAccessException;


2、用iBatis实现Dao接口

(org.springframework.orm.ibatis.support.SqlMapClientDaoSupport)

extends SqlMapClientDaoSupport implements AccountDao

使用getSqlMapClientTemplate()模板的相应方法进行具体实现。

(1)SqlMapAccountDao

(2)SqlMapCategoryDao

(3)SqlMapItemDao

(4)SqlMapOrderDao:依赖SqlMapSequenceDao

(5)SqlMapProductDao


添加基处的处理类:

(6)SqlMapSequenceDao extends SqlMapClientDaoSupport:提供类似Oracle序列的功能。(先获取,后更新)

(7)Sequence implements Serializable:序列对象的持久化bean。

(8)OracleSequenceDao extends SqlMapSequenceDao


3、iBatis的配置文件

(1)Account.xml:

(2)Category.xml:

(3)Item.xml:

(4)LineItem.xml:

(5)Order.xml:

(6)Product.xml:

(7)Sequence.xml:
(五)业务层的实现

1、用户注册

A、显示注册页面:newAccount.do

<action path="/shop/newAccount" type="org.springframework.samples.jpetstore.web.struts.NewAccountAction" name="workingAccountForm" scope="session" validate="true" input="/WEB-INF/jsp/struts/NewAccountForm.jsp"> <forward name="success" path="/shop/index.do"/>
</action>

2、用户登陆 3、购物车 4、结算
5、订单查询
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值