建表和项目搭建
订单表信息描述 orders
- productId描述了订单与产品之间的关系。
- memberid描述了订单与会员之间的关系。
PLSQL建表
实体类实现
public class Orders {
private String id;
private String orderNum;
private Date orderTime;
private String orderTimeStr;
private int orderStatus;
private int peopleCount;
private Product product;
private List<Traveller> travellers;
private Member member;
private Integer payType;
private String payTypeStr;
private String orderDesc;
//省略getter/setter
}
- 该项目为一个旅游产品的后台管理,旅游订单的旅游产品只有一个(区别于电商项目,一个订单会有多个产品)
会员表信息描述member
订单与会员之间是多对一关系,在订单表中创建一个外键来进行关联
PLSQL建表
实体类
public class Member {
private String id;
private String name;
private String nickname;
private String phoneNum;
private String email;
//省略getter/setter
}
旅客表信息描述 traveller
OLSQL建表
CREATE TABLE traveller( id varchar2(32) default SYS_GUID() PRIMARY KEY,
NAME VARCHAR2(20),
sex VARCHAR2(20),
phoneNum VARCHAR2(20),
credentialsType INT,
credentialsNum VARCHAR2(50),
travellerType INT )
实体类实现
public class Traveller {
private String id;
private String name;
private String sex;
private String phoneNum;
private Integer credentialsType;
private String credentialsTypeStr;
private String credentialsNum;
private Integer travellerType;
private String travellerTypeStr;
//省略getter/setter
}
中间表查询
旅客与订单之间是多对多关系,所以我们需要一张中间表(order_traveller)来描述
中间表建表
CREATE TABLE order_traveller( orderId varchar2(32),
travellerId varchar2(32),
PRIMARY KEY (orderId,travellerId),
FOREIGN KEY (orderId) REFERENCES orders(id),
FOREIGN KEY (travellerId) REFERENCES traveller(id)
)
订单操作Controller Service Dao实现
- IOrderService
OrdersServiceImpl
-
IOrdersDao
-
OrdersController
订单查询
- 入口在侧边栏 /基础数据/订单管理
- 订单查询页面 order-list.jsp
订单查询思路
- 存在关联查询,要获得订单信息和产品信息
- 查询的返回结果为list< orders>,通过orders关联产品信息,controller返回orders-list.jsp
思考
前后端不分离的项目,前后端代码交织在一起虽然避免了跨域的问题,但是代码内嵌严重,业务逻辑一旦复杂起来代码量大且难以阅读
以订单查询为例,在aside.jsp中
点击订单管理,发起/orders/findAll.do?page=1&pageSize=3,则Controller处理该请求
Dao分析
public interface IOrdersDao {
@Select("select * from orders")
@Results({
@Result(id=true,property = "id",column = "id"),
@Result(property = "orderNum",column = "orderNum"),
@Result(property = "orderTime",column = "orderTime"),
@Result(property = "orderStatus",column = "orderStatus"),
@Result(property = "peopleCount",column = "peopleCount"),
@Result(property = "peopleCount",column = "peopleCount"),
@Result(property = "payType",column = "payType"),
@Result(pro