订单操作

订单操作

查询所有订单:

订单,会员,旅客,数据表创建.

在这里插入图片描述
在这里插入图片描述

数据库表关系

(通过中间表连接,那么向中间表中插入两表的id就将两表连接在一起了)
在这里插入图片描述

-- 订单
drop table 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, ordertime, peoplecount, orderdesc, paytype, orderstatus, 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');


-- 会员
drop table 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');


-- 旅客
drop table 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);


-- 订单与旅客中间表
drop table 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 ('0E7231DC797C486290E8713CA3C6ECCC', '3FE27DF2A4E44A6DBC5D0FE4651D3D3E');
insert into ORDER_TRAVELLER (orderid, travellerid)
values ('2FF351C4AC744E2092DCF08CFD314420', '3FE27DF2A4E44A6DBC5D0FE4651D3D3E');
insert into ORDER_TRAVELLER (orderid, travellerid)
values ('3081770BC3984EF092D9E99760FDABDE', 'EE7A71FB6945483FBF91543DBE851960');
insert into ORDER_TRAVELLER (orderid, travellerid)
values ('55F9AF582D5A4DB28FB4EC3199385762', '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 ('A0657832D93E4B10AE88A2D4B70B1A28', '3FE27DF2A4E44A6DBC5D0FE4651D3D3E');
insert into ORDER_TRAVELLER (orderid, travellerid)
values ('CA005CF1BE3C4EF68F88ABC7DF30E976', 'EE7A71FB6945483FBF91543DBE851960');
insert into ORDER_TRAVELLER (orderid, travellerid)
values ('E4DD4C45EED84870ABA83574A801083E', 'EE7A71FB6945483FBF91543DBE851960');


创建实体类:

Order:

数据库中以数字状态信息,所以我们这里要具体出来.

//订单类
 /**
 * @Author: 刚满20就秃顶
 * @Code:
 */

@Data
public class Order {
    private String id;
    private String orderNum;
    private Date orderTime;       //下单时间
    private String orderTimeStr;
    private int orderStatus;
    private String orderStatusStr;  //0未支付  1已支付

    private int peopleCount;       //出行人数
    private Product product;
    private List<Traveller> travellers;   //旅客
    private Member member;                //会员
    private Integer payType;       //支付方式( 0未支付 ,1 支付)
    private String payTypeStr;
    private String orderDesc;      //订单描述

       //下单时间要转化为字符串
    public String getOrderTimeStr() {
        String time =  new dateUtils().toString("yyyy-MM-dd : HH:mm", orderTime);
        return time;
    }
     //下单状态
    public String getOrderStatusStr() {
        if(orderStatus==0){
            orderStatusStr="未支付";
        }
        else if(orderStatus==1){
            orderStatusStr="以支付";
        }
        return orderStatusStr;
    }

    public String getPayTypeStr() {
        if(payType==0){
            payTypeStr="支付宝";
        }else if(payType==1){
            payTypeStr="微信";
        }else if(payType==2){
            payTypeStr="其它";
        }
        return payTypeStr;
    }
}


Member类.

//会员类
 /**
 * @Author: 刚满20就秃顶
 * @Code:
 */
@Data 
public class Member {
    private String id;
    private String name;
    private String nickname;
    private String phoneNum;
    private String email;
}

Traveller类
/*旅客*/
 @Data
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;
}


三层

Controller层.
@Controller
@RequestMapping("orders")
public class IOrdersController {
    @Autowired
    private IOrderService service ;

    @RequestMapping("findAll")
    public String findAll(Model model){
          List<Order> findAll =  service.findAll();
          model.addAttribute("ordersList",findAll);
          return "orders-list";
    }
}


Service层.
public interface IOrderService {
     List<Order> findAll();
}
ServiceImpl.

@Controller
@RequestMapping("orders")
public class IOrdersController {
    @Autowired
    private IOrderService service ;

    @RequestMapping("findAll")
    public String findAll(Model model){
          List<Order> findAll =  service.findAll();
          model.addAttribute("ordersList",findAll);
          return "orders-list";
    }
}

IOderDao :
@Repository
public interface IOderDao {

    //查询所有订单,包括产品的名称和价格  ,所有需要关联Product表
    @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(property = "orderDesc", column = "orderDesc"),
            @Result(property = "product" ,column = "productId" ,javaType = Product.class ,one=@One(select = "com.itheima.dao.IProductDao.findById"))
    }

    )
    public List<Order> findAll();
}


这里关联了Product表.所有需要向IProductDao中创建方法.

IProductDao.
  @Select("select * from product where id = #{id}")
    public Product findById();

在这里插入图片描述

分页显示条数:

固定设置为每页显示4条

使用pagehelper

PageHelper是国内非常优秀的一款开源的mybatis分页插件,它支持基本主流与常用的数据库,例如mysql、oracle、mariaDB、DB2、SQLite、Hsqldb等
在这里插入图片描述
IOrderdDao中findAll方法.

public interface IOrderdDao {

     //查询数据,多表关联  通过id查询到product的数据 得到多表并和数据
     @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(property = "orderDesc",column = "orderDesc"),       //得到根据联合表id得到Product数据
             @Result(property = "product",column = "productId",javaType = Product.class,one = @One(select = "com.itheima.dao.IProductDao.findById")),
     })
     public List<Orders> findAll() throws Exception;
}

Service层的IOrdersService.

/**
 * @Author: 刚满20就秃顶
 * @Code:
 */
public interface IOrdersService {
  List<Orders> findAll(int page,int size) throws Exception;
}

**SerivceImpl:

@Service
@Transactional
public class OrdersServiceImpl implements IOrdersService {
    @Autowired
    IOrderdDao dao ;
    @Override
    public List<Orders> findAll(int page, int size) throws Exception {
        //参数pageNum 是页码值   参数pageSize 代表是每页显示条数
        PageHelper.startPage(page,size);
        return dao.findAll();
    }
}

Controlle层.

@RequestMapping("/orders")
public class OrderController {
    @Autowired
    private IOdersService service ;
    @RequestMapping("/findAll")
    //我们在aside.jsp上设置了href的值,带参数page和size的值,
    // 这里通过@RequsetParam获取并设置赋给page和size,service利用该参数值,进行分页查询
    public String findAll(Model model , @RequestParam(name = "page" ,required = true ,defaultValue = "1")int page,
                          @RequestParam(name = "size",required = true ,defaultValue = "4")int size){
         List<Orders> list =service.findAll(page, size);
         //将得到的结果进行分页
        PageInfo info = new PageInfo(list);
        model.addAttribute("PageInfo",info);
        return "orders-page-list";
    }
}

设置侧边栏.

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

自定分页显示条数

在这里插入图片描述

自定义每页显示的页数.

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

订单详情查询

点击详情页查询个人信息.在这里插入图片描述
用到了三张表,
订单表: Orders.
游客表:Traveller.
会员表: Member
在这里插入图片描述
点击详情按钮携带id到Controller层方法.
在这里插入图片描述

Controller.

接收到jsp页面传递的id值.
创建findById方法.

   @RequestMapping("/findById")
    public String findById(Model model,@RequestParam(name = "id" ,required = true) String ordersId ) throws Exception {
    Orders orders =  service.finById(ordersId);
    model.addAttribute("orders",orders);
    return  "orders-show";
   }

根据Controller编写Service和Dao层.
Service.
在这里插入图片描述
ServiceImpl.
在这里插入图片描述
Dao.
在这里插入图片描述
在这里插入图片描述

/**
 * @Author: 刚满20就秃顶
 * @Code:
 */
    //详情按钮
   //多表操作
    @Select("select * from orders where id=#{ordersId}")
    @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(property = "orderDesc", column = "orderDesc"),
            @Result(property = "product", column = "productId", javaType = Product.class, one = @One(select = "com.itheima.dao.IProductDao.findById")),
            @Result(property = "member",column = "memberId",javaType = Member.class,one = @One(select = "com.itheima.dao.IMemberDao.findById")),
            @Result(property = "travellers",column = "id",javaType =java.util.List.class,many = @Many(select = "com.itheima.dao.ITravellersDao.findByOrdersId"))
    })
    public Orders findById(String ordersId) throws Exception;
}

一对一关联Product.
在ProductDao中创建findById方法.


       @Select("select * from product where id=#{id}")
    public Product findById(String id) throws Exception;

一对一关联Member.

      @Select("select * from member where id=#{id}")
    public Member findById(String id) throws Exception;

多对多关联Traveller.

 // 先通过中间表查询,在与旅客表进行查询
 @Select("select * from traveller where id in (select travellerId from order_traveller where orderId=#{ordersId})")

    public List<Traveller> findByOrdersId(String ordersId) throws Exception;

最后Controller层:
在这里插入图片描述
在这里插入图片描述
但是发现证件类型和人群没有结果
老样子:

在这里插入图片描述

在这里插入图片描述

代码:

SSM-源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值