Java SSM 项目实战 day03 功能介绍,订单的操作,订单的增删改查
发布日期:2021-06-29 15:04:13 浏览次数:3 分类:技术文章

本文共 24245 字,大约阅读时间需要 80 分钟。

一、SSM订单操作

1.表结构分析

1.1.会员表信息描述member

订单与会员之间是多对一关系,我们在订单表中创建一个外键来进行关联。

在这里插入图片描述
创建member表
在这里插入图片描述

CREATE TABLE member(  id varchar2(32) default SYS_GUID() PRIMARY KEY,  NAME VARCHAR2(20),  nickname VARCHAR2(20),  phoneNum VARCHAR2(20),  email VARCHAR2(20))insert into MEMBER (id, name, nickname, phonenum, email)values ('E61D65F673D54F68B0861025C69773DB', '张三', '小三', '18888888888', 'zs@163.com');

1.2.订单表信息描述 orders

在这里插入图片描述

CREATE TABLE orders(id varchar2(32) default SYS_GUID() PRIMARY KEY,orderNum VARCHAR2(20) NOT NULL UNIQUE,orderTime timestamp,peopleCount INT,orderDesc VARCHAR2(500),payType INT,orderStatus INT,productId varchar2(32),memberId varchar2(32),FOREIGN KEY (productId) REFERENCES product(id),FOREIGN KEY (memberId) REFERENCES member(id))insert into ORDERS (id, ordernum,productid, memberid)values ('0E7231DC797C486290E8713CA3C6ECCC', '12345', to_timestamp('02-03-2018 12:00:00.000000','dd-mm-yyyy hh24:mi:ss.ff'), 2, '没什么', 0, 1, '676C5BD1D35E429A8C2E114939C5685A','E61D65F673D54F68B0861025C69773DB');insert into ORDERS (id, ordernum, ordertime, peoplecount, orderdesc, paytype, orderstatus,productid, memberid)values ('5DC6A48DD4E94592AE904930EA866AFA', '54321', to_timestamp('02-03-2018 12:00:00.000000','dd-mm-yyyy hh24:mi:ss.ff'), 2, '没什么', 0, 1, '676C5BD1D35E429A8C2E114939C5685A','E61D65F673D54F68B0861025C69773DB');insert into ORDERS (id, ordernum, ordertime, peoplecount, orderdesc, paytype, orderstatus,productid, memberid)values ('2FF351C4AC744E2092DCF08CFD314420', '67890', to_timestamp('02-03-2018 12:00:00.000000','dd-mm-yyyy hh24:mi:ss.ff'), 2, '没什么', 0, 1, '12B7ABF2A4C544568B0A7C69F36BF8B7','E61D65F673D54F68B0861025C69773DB');insert into ORDERS (id, ordernum, ordertime, peoplecount, orderdesc, paytype, orderstatus,productid, memberid)values ('A0657832D93E4B10AE88A2D4B70B1A28', '98765', to_timestamp('02-03-2018 12:00:00.000000','dd-mm-yyyy hh24:mi:ss.ff'), 2, '没什么', 0, 1, '12B7ABF2A4C544568B0A7C69F36BF8B7','E61D65F673D54F68B0861025C69773DB');insert into ORDERS (id, ordernum, ordertime, peoplecount, orderdesc, paytype, orderstatus,productid, memberid)values ('E4DD4C45EED84870ABA83574A801083E', '11111', to_timestamp('02-03-2018 12:00:00.000000','dd-mm-yyyy hh24:mi:ss.ff'), 2, '没什么', 0, 1, '12B7ABF2A4C544568B0A7C69F36BF8B7','E61D65F673D54F68B0861025C69773DB');insert into ORDERS (id, ordernum, ordertime, peoplecount, orderdesc, paytype, orderstatus,productid, memberid)values ('96CC8BD43C734CC2ACBFF09501B4DD5D', '22222', to_timestamp('02-03-2018 12:00:00.000000','dd-mm-yyyy hh24:mi:ss.ff'), 2, '没什么', 0, 1, '12B7ABF2A4C544568B0A7C69F36BF8B7','E61D65F673D54F68B0861025C69773DB');insert into ORDERS (id, ordernum, ordertime, peoplecount, orderdesc, paytype, orderstatus,productid, memberid)values ('55F9AF582D5A4DB28FB4EC3199385762', '33333', to_timestamp('02-03-2018 12:00:00.000000','dd-mm-yyyy hh24:mi:ss.ff'), 2, '没什么', 0, 1, '9F71F01CB448476DAFB309AA6DF9497F','E61D65F673D54F68B0861025C69773DB');insert into ORDERS (id, ordernum, ordertime, peoplecount, orderdesc, paytype, orderstatus,productid, memberid)values ('CA005CF1BE3C4EF68F88ABC7DF30E976', '44444', to_timestamp('02-03-2018 12:00:00.000000','dd-mm-yyyy hh24:mi:ss.ff'), 2, '没什么', 0, 1, '9F71F01CB448476DAFB309AA6DF9497F','E61D65F673D54F68B0861025C69773DB');insert into ORDERS (id, ordernum, ordertime, peoplecount, orderdesc, paytype, orderstatus,productid, memberid)values ('3081770BC3984EF092D9E99760FDABDE', '55555', to_timestamp('02-03-2018 12:00:00.000000','dd-mm-yyyy hh24:mi:ss.ff'), 2, '没什么', 0, 1, '9F71F01CB448476DAFB309AA6DF9497F','E61D65F673D54F68B0861025C69773DB');

1.3.旅客表信息描述 traveller

在这里插入图片描述

在这里插入图片描述

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)insert into TRAVELLER (id, name, sex, phonenum, credentialstype, credentialsnum, travellertype)values ('3FE27DF2A4E44A6DBC5D0FE4651D3D3E', '张龙', '男', '13333333333', 0,'123456789009876543', 0);insert into TRAVELLER (id, name, sex, phonenum, credentialstype, credentialsnum, travellertype)values ('EE7A71FB6945483FBF91543DBE851960', '张小龙', '男', '15555555555', 0,'987654321123456789', 1);

旅客与订单之间是多对多关系,所以我们需要一张中间表(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))insert into ORDER_TRAVELLER (orderid, travellerid)values ('96CC8BD43C734CC2ACBFF09501B4DD5D', '3FE27DF2A4E44A6DBC5D0FE4651D3D3E');insert into ORDER_TRAVELLER (orderid, travellerid)values ('2FF351C4AC744E2092DCF08CFD314420', '3FE27DF2A4E44A6DBC5D0FE4651D3D3E');insert into ORDER_TRAVELLER (orderid, travellerid)values ('5DC6A48DD4E94592AE904930EA866AFA', 'EE7A71FB6945483FBF91543DBE851960');insert into ORDER_TRAVELLER (orderid, travellerid)values ('A0657832D93E4B10AE88A2D4B70B1A28', 'EE7A71FB6945483FBF91543DBE851960');insert into ORDER_TRAVELLER (orderid, travellerid)values ('CA005CF1BE3C4EF68F88ABC7DF30E976', '3FE27DF2A4E44A6DBC5D0FE4651D3D3E');insert into ORDER_TRAVELLER (orderid, travellerid)values ('96CC8BD43C734CC2ACBFF09501B4DD5D', 'EE7A71FB6945483FBF91543DBE851960');insert into ORDER_TRAVELLER (orderid, travellerid)values ('5DC6A48DD4E94592AE904930EA866AFA', '3FE27DF2A4E44A6DBC5D0FE4651D3D3E');insert into ORDER_TRAVELLER (orderid, travellerid)values ('96CC8BD43C734CC2ACBFF09501B4DD5D', 'EE7A71FB6945483FBF91543DBE851960');insert into ORDER_TRAVELLER (orderid, travellerid)values ('5DC6A48DD4E94592AE904930EA866AFA', 'EE7A71FB6945483FBF91543DBE851960');

1.4.创建对应表的实体类

a、Traveller

在这里插入图片描述

在这里插入图片描述

package com.itzheng.ssm.domain;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; public Traveller() {
} public Traveller(String id, String name, String sex, String phoneNum, Integer credentialsType, String credentialsTypeStr, String credentialsNum, Integer travellerType, String travellerTypeStr) {
this.id = id; this.name = name; this.sex = sex; this.phoneNum = phoneNum; this.credentialsType = credentialsType; this.credentialsTypeStr = credentialsTypeStr; this.credentialsNum = credentialsNum; this.travellerType = travellerType; this.travellerTypeStr = travellerTypeStr; } public String getId() {
return id; } public void setId(String id) {
this.id = id; } public String getName() {
return name; } public void setName(String name) {
this.name = name; } public String getSex() {
return sex; } public void setSex(String sex) {
this.sex = sex; } public String getPhoneNum() {
return phoneNum; } public void setPhoneNum(String phoneNum) {
this.phoneNum = phoneNum; } public Integer getCredentialsType() {
return credentialsType; } public void setCredentialsType(Integer credentialsType) {
this.credentialsType = credentialsType; } public String getCredentialsTypeStr() {
return credentialsTypeStr; } public void setCredentialsTypeStr(String credentialsTypeStr) {
this.credentialsTypeStr = credentialsTypeStr; } public String getCredentialsNum() {
return credentialsNum; } public void setCredentialsNum(String credentialsNum) {
this.credentialsNum = credentialsNum; } public Integer getTravellerType() {
return travellerType; } public void setTravellerType(Integer travellerType) {
this.travellerType = travellerType; } public String getTravellerTypeStr() {
return travellerTypeStr; } public void setTravellerTypeStr(String travellerTypeStr) {
this.travellerTypeStr = travellerTypeStr; } @Override public String toString() {
return "Traveller{" + "id='" + id + '\'' + ", name='" + name + '\'' + ", sex='" + sex + '\'' + ", phoneNum='" + phoneNum + '\'' + ", credentialsType=" + credentialsType + ", credentialsTypeStr='" + credentialsTypeStr + '\'' + ", credentialsNum='" + credentialsNum + '\'' + ", travellerType=" + travellerType + ", travellerTypeStr='" + travellerTypeStr + '\'' + '}'; }}
b、Member

在这里插入图片描述

在这里插入图片描述

package com.itzheng.ssm.domain;public class Member {
private String id; private String name; private String nickname; private String phoneNum; private String email; public Member() {
} public Member(String id, String name, String nickname, String phoneNum, String email) {
this.id = id; this.name = name; this.nickname = nickname; this.phoneNum = phoneNum; this.email = email; } public String getId() {
return id; } public void setId(String id) {
this.id = id; } public String getName() {
return name; } public void setName(String name) {
this.name = name; } public String getNickname() {
return nickname; } public void setNickname(String nickname) {
this.nickname = nickname; } public String getPhoneNum() {
return phoneNum; } public void setPhoneNum(String phoneNum) {
this.phoneNum = phoneNum; } public String getEmail() {
return email; } public void setEmail(String email) {
this.email = email; } @Override public String toString() {
return "Member{" + "id='" + id + '\'' + ", name='" + name + '\'' + ", nickname='" + nickname + '\'' + ", phoneNum='" + phoneNum + '\'' + ", email='" + email + '\'' + '}'; }}
c、Orders

在这里插入图片描述

在这里插入图片描述

package com.itzheng.ssm.domain;import java.util.Date;import java.util.List;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
travellers; private Member member; private Integer payType; private String payTypeStr; private String orderDesc; public Orders() {
} public Orders(String id, String orderNum, Date orderTime, String orderTimeStr, int orderStatus, int peopleCount, Product product, List
travellers, Member member, Integer payType, String payTypeStr, String orderDesc) {
this.id = id; this.orderNum = orderNum; this.orderTime = orderTime; this.orderTimeStr = orderTimeStr; this.orderStatus = orderStatus; this.peopleCount = peopleCount; this.product = product; this.travellers = travellers; this.member = member; this.payType = payType; this.payTypeStr = payTypeStr; this.orderDesc = orderDesc; } public String getId() {
return id; } public void setId(String id) {
this.id = id; } public String getOrderNum() {
return orderNum; } public void setOrderNum(String orderNum) {
this.orderNum = orderNum; } public Date getOrderTime() {
return orderTime; } public void setOrderTime(Date orderTime) {
this.orderTime = orderTime; } public String getOrderTimeStr() {
return orderTimeStr; } public void setOrderTimeStr(String orderTimeStr) {
this.orderTimeStr = orderTimeStr; } public int getOrderStatus() {
return orderStatus; } public void setOrderStatus(int orderStatus) {
this.orderStatus = orderStatus; } public int getPeopleCount() {
return peopleCount; } public void setPeopleCount(int peopleCount) {
this.peopleCount = peopleCount; } public Product getProduct() {
return product; } public void setProduct(Product product) {
this.product = product; } public List
getTravellers() {
return travellers; } public void setTravellers(List
travellers) {
this.travellers = travellers; } public Member getMember() {
return member; } public void setMember(Member member) {
this.member = member; } public Integer getPayType() {
return payType; } public void setPayType(Integer payType) {
this.payType = payType; } public String getPayTypeStr() {
return payTypeStr; } public void setPayTypeStr(String payTypeStr) {
this.payTypeStr = payTypeStr; } public String getOrderDesc() {
return orderDesc; } public void setOrderDesc(String orderDesc) {
this.orderDesc = orderDesc; } @Override public String toString() {
return "Orders{" + "id='" + id + '\'' + ", orderNum='" + orderNum + '\'' + ", orderTime=" + orderTime + ", orderTimeStr='" + orderTimeStr + '\'' + ", orderStatus=" + orderStatus + ", peopleCount=" + peopleCount + ", product=" + product + ", travellers=" + travellers + ", member=" + member + ", payType=" + payType + ", payTypeStr='" + payTypeStr + '\'' + ", orderDesc='" + orderDesc + '\'' + '}'; }}

2.订单查询

2.1 订单查询页面 order-page-list.jsp,创建该页面

在这里插入图片描述

<%@ page language="java" contentType="text/html; charset=UTF-8"	pageEncoding="UTF-8"%><%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
数据 - AdminLTE2定制版

数据管理 数据列表

列表

ID 订单编号 产品名称 金额 下单时间 订单状态 操作
${orders.id } ${orders.orderNum } ${orders.product.productName } ${orders.product.productPrice } ${orders.orderTimeStr } ${orders.orderStatusStr }

2.2 创建IOrdersDao接口

在这里插入图片描述

在这里插入图片描述

package com.itzheng.ssm.dao;import com.itzheng.ssm.domain.Orders;import org.apache.ibatis.annotations.One;import org.apache.ibatis.annotations.Result;import org.apache.ibatis.annotations.Results;import org.apache.ibatis.annotations.Select;import java.util.List;public interface IOrdersDao {
@Select("select * from orders") @Results({
@Result(id=true,column = "id",property = "id"), @Result(column = "orderNum",property = "orderNum"), @Result(column = "orderTime",property = "orderTime"), @Result(column = "orderStatus",property = "orderStatus"), @Result(column = "peopleCount",property = "peopleCount"), @Result(column = "payType",property = "payType"), @Result(column = "orderDesc",property = "orderDesc"), @Result(column = "productId",property = "product",one = @One(select = "com.itzheng.ssm.dao.IProductDao.findById")) }) List
findAll() throws Exception;}

在这里插入图片描述

2.3 修改IProductDao,添加通过i查询的方法

在这里插入图片描述

//根据id查询产品    @Select("select * from product where id=#{id}")    public Product findById(String id) throws Exception;

3.订单分页查询

3.1 PageHelper介绍

PageHelper是国内非常优秀的一款开源的mybatis分页插件,它支持基本主流与常用的数据库,例如mysql、

oracle、mariaDB、DB2、SQLite、Hsqldb等。
本项目在 github 的项目地址:
本项目在 gitosc 的项目地址:

3.2 PageHelper使用

3.2.1.集成

引入分页插件有下面2种方式,推荐使用 Maven 方式。

3.2.1.1. 引入 Jar 包

你可以从下面的地址中下载最新版本的 jar 包

由于使用了sql 解析工具,你还需要下载 jsqlparser.jar:

3.2.1.2. 使用 Maven

在 pom.xml 中添加如下依赖:

在这里插入图片描述

com.github.pagehelper
pagehelper
5.1.10
3.2. 2.配置

特别注意,新版拦截器是 com.github.pagehelper.PageInterceptor 。 com.github.pagehelper.PageHelper 现

在是一个特殊的 dialect 实现类,是分页插件的默认实现类,提供了和以前相同的用法。
3.2.2.1. 在 Spring 配置文件中配置拦截器插件
使用 spring 的属性配置方式,可以使用 plugins 属性像下面这样配置:
在这里插入图片描述

oracle
true

3.3 订单分页查询

3.3.1 Service,创建接口和实现类

在这里插入图片描述

在这里插入图片描述

package com.itzheng.ssm.service;import com.itzheng.ssm.domain.Orders;import java.util.List;public interface IOrdersService {
public List
findAll(int page, int pageSize) throws Exception;}

实现类当中

在这里插入图片描述

package com.itzheng.ssm.service.impl;import com.github.pagehelper.PageHelper;import com.itzheng.ssm.dao.IOrdersDao;import com.itzheng.ssm.domain.Orders;import com.itzheng.ssm.service.IOrdersService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import java.util.List;@Service@Transactionalpublic class OrdersServiceImpl implements IOrdersService {
@Autowired IOrdersDao ordersDao; @Override public List
findAll(int page, int pageSize) throws Exception {
PageHelper.startPage(page, pageSize); return ordersDao.findAll(); }}
3.3.2 Controller

OrdersController当中

在这里插入图片描述

package com.itzheng.ssm.controller;import com.github.pagehelper.PageInfo;import com.itzheng.ssm.domain.Orders;import com.itzheng.ssm.service.IOrdersService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.servlet.ModelAndView;import java.util.List;@Controller@RequestMapping("/orders")public class OrdersController {
@Autowired IOrdersService ordersService; @RequestMapping("/findAll.do") public ModelAndView findAll(@RequestParam(name = "page", required = true, defaultValue = "1") int page, @RequestParam(name = "size", required = true, defaultValue = "4") int size) throws Exception {
ModelAndView mv = new ModelAndView(); List
ordersList = ordersService.findAll(page, size); //PageInfo就是一个分页Bean PageInfo pageInfo=new PageInfo(ordersList); mv.addObject("pageInfo",pageInfo); mv.setViewName("orders-page-list"); return mv; }}
3.3.3 运行测试

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
设置每页展示的条数

4.订单详情的查询实现

4.1 通过id查询

(1)dao的实现

IOrdersDao的findById方法

在这里插入图片描述

@Select("select * from orders where id=#{id}")    @Results({
@Result(id=true,column = "id",property = "id"), @Result(column = "orderNum",property = "orderNum"), @Result(column = "orderTime",property = "orderTime"), @Result(column = "orderStatus",property = "orderStatus"), @Result(column = "peopleCount",property = "peopleCount"), @Result(column = "payType",property = "payType"), @Result(column = "orderDesc",property = "orderDesc"), @Result(column = "productId",property = "product",one = @One(select = "com.itzheng.ssm.dao.IProductDao.findById")), @Result(column = "id",property = "travellers",many = @Many(select = "com.itzheng.ssm.dao.ITravellerDao.findByOrdersId")), @Result(column = "memberId",property = "member",one = @One(select = "com.itzheng.ssm.dao.IMemberDao.findById")), }) Orders findById(String id) throws Exception;

在这里插入图片描述

IMemberDao的findById方法
在这里插入图片描述

ITravellerDao.findByOrdersId方法

在这里插入图片描述

package com.itzheng.ssm.dao;import com.itzheng.ssm.domain.Traveller;import org.apache.ibatis.annotations.Select;import java.util.List;public interface ITravellerDao {
@Select("select * from traveller where id in (select travellerId from order_traveller where orderId=#{ordersId})") List
findByOrdersId(String ordersId) throws Exception;}
(2)Service的实现

在这里插入图片描述

Orders findById(String ordersId)  throws Exception ;

在这里插入图片描述

@Override    public Orders findById(String ordersId) throws Exception  {
return ordersDao.findById(ordersId); }
(3)在OrdersController当中创建findById方法

在这里插入图片描述

@RequestMapping("/findById.do")    public ModelAndView findById(@RequestParam(name = "id",required = true) String ordersId) throws Exception {
ModelAndView mv = new ModelAndView(); Orders orders = ordersService.findById(ordersId); mv.addObject("orders",orders); mv.setViewName("orders-show"); return mv; }
(4)创建orders-show.jsp

在这里插入图片描述

<%@ page language="java" contentType="text/html; charset=UTF-8"	pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
数据 - AdminLTE2定制版

订单管理 全部订单

订单信息
订单编号
下单时间
路线名称
出发城市
出发时间
出游人数
其他信息
游客信息
人群 姓名 性别 手机号码 证件类型 证件号码
${traveller.travellerTypeStr}
联系人信息
会员
${orders.member.nickname }
联系人
${orders.member.name}
手机号
${orders.member.phoneNum}
邮箱
${orders.member.email}
费用信息
支付方式
在线支付-${orders.payTypeStr}
金额
¥${orders.product.productPrice}

运行测试项目

在这里插入图片描述

在这里插入图片描述

上面证件类型和人群没有显示

(5)修改Traveller类

在这里插入图片描述

public String getCredentialsTypeStr() {
if(credentialsType != null){
if(credentialsType == 0){
credentialsTypeStr = "身份证"; } if(credentialsType == 1){
credentialsTypeStr = "护照"; } if(credentialsType == 2){
credentialsTypeStr = "军官证"; } } return credentialsTypeStr; }

在这里插入图片描述

public String getTravellerTypeStr() {
if(travellerType != null){
if(travellerType == 0){
travellerTypeStr = "成人"; } if(travellerType == 1){
travellerTypeStr = "儿童"; } } return travellerTypeStr; }

重新运行代码

在这里插入图片描述
显示成功
在这里插入图片描述

转载地址:https://code100.blog.csdn.net/article/details/116428285 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Java SSM 项目实战 day04 功能介绍,订单的操作,订单的增删改查,实现登录功能
下一篇:Java SSM 项目实战 day02 功能介绍,SSM整合,数据库和IDEA的maven工程搭建,产品信息查询和添加

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月17日 16时13分21秒