商城后台之order订单表的实现附详解(六)

先来看看order表的结构

目录

类(Order)实现

类(OrderBO)实现 ---1

类OrderDAO实现

类(OrderBO)CRUD的实现 ---2

类(OrderRequestDTO)的实现

 

类(OrderDTO)的实现

类(OrderResponseDTO)的实现

类(OrderListResponseDTO)的实现

类(OrderResponseDTO)的实现

类(OrderFactory)的实现

 

 


 


类(Order)实现

首先是实现实体类,具体操作参考前面的博客( 商城后台之user表的实现(二)---(1))

然后别忘了加

@GeneratedValue(strategy = GenerationType.IDENTITY)

如果没有加的话,后面运行的时候会报找不到主键的错误,

@GeneratedValue注释定义了标识字段生成方式。

IDENTITY:主键由数据库自动生成(主要是自动增长型) 

 

 

 

类(OrderBO)实现 ---1

注解@Service

有了此注解,应用程序将会自动扫描此类

 

 

类OrderDAO实现

DAO 里的 @Transactional 是表示这个 DAO 里的方法有事务,即单表的操作也有事务

基础的 Repository 提供了最基本的数据访问功能,其几个子接口则扩展了一些功能。它们的继承关系如下: 
Repository: 仅仅是一个标识,表明任何继承它的均为仓库接口类 
(1) CrudRepository: 继承 Repository,实现了一组 CRUD 相关的方法 
(2)PagingAndSortingRepository: 继承 CrudRepository,实现了一组分页排序相关的方法 
(3)JpaRepository: 继承 PagingAndSortingRepository,实现一组 JPA 规范相关的方法

ctrl+鼠标左键点击jpaRepository,即可查看相关的方法

补充一下:

在这里写个查询单一数据的方法:

Order findOrderById(Long orderId);

 

 

 

类(OrderBO)CRUD的实现 ---2

@Resource(这个注解属于J2EE的),默认安照名称进行装配,名称可以通过name属性进行指定, 
如果没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称查找,如果注解写在setter方法上默认取属性名进行装配。 当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。
Java代码  收藏代码
@Resource(name="baseDao")     
private BaseDao baseDao;  

 

首先,写一下create方法,先看一下jpaReposity的源码:

  Order create(long userId, long productId, Long orderNo, Integer payment, Integer paymentType, Integer postage, Integer status, Timestamp paymentTime,Timestamp sendTime,Timestamp endTime,Timestamp closeTime){
        Order order = new Order();
        order.setUserId(userId);
        order.setProductId(productId);
        order.setOrderNo(orderNo);
        order.setPayment(payment);
        order.setPaymentType(paymentType);
        order.setPostage(postage);
        order.setStatus(status);
        order.setPaymentTime(paymentTime);
        order.setSendTime(sendTime);
        order.setEndTime(endTime);
        order.setCloseTime(closeTime);

        return orderDAO.save(order);
    }

 

其次,写查询单一数据的getById方法:

Order getById(Long order){

return orderDAO.findOrderById(order);

}

 

然后写一个查询所有数据的getOrderList方法:

List<Order> getOrderList(){
    return orderDAO.findAll();
    }

再然后写删除的方法deleteOrder:

void deleteOrder(Long orderId){
Order order = orderDAO.findOrderById(orderId);
if( orderId!=0){
    orderDAO.delete(order);
}
}

还有一个更新方法,我需要在OrderRequest重新写一遍bean

 

Order updateOrder(Long orderId, OrderRequestDTO body){
Order order = orderDAO.findOrderById(orderId);

if(body.getCloseTime() != null){
    order.setCloseTime(body.getCloseTime());
}
if(body.getEndTime() != null){
    order.setEndTime(body.getEndTime());
}
if(body.getOrderNo() != null){
    order.setOrderNo(body.getOrderNo());
}
if(body.getPayment()!=null){
    order.setPayment(body.getPayment());
}
if(body.getPaymentTime()!=null){
    order.setPaymentTime(body.getPaymentTime());
}
if(body.getPostage()!=null){
    order.setPostage(body.getPostage());
}
if(body.getPaymentType()!=null){
    order.setPaymentType(body.getPaymentType());
}
if(body.getSendTime()!=null){
    order.setSendTime(body.getSendTime());
}
if(body.getStatus()!=null){
    order.setStatus(body.getStatus());
}
 
order=orderDAO.save(order);
return order;

}

 

类(OrderRequestDTO)的实现

 

更新的方法会调用这里的get方法,注意,这里是没有OrderId的,更新数据并不需要更新id,所以没有写,剩下的大致跟bean差不多

package com.wayknew.demo.order.request;


import java.sql.Timestamp;

public class OrderRequestDTO {

    private long userId;
    private long productId;
    private Long orderNo;
    private Integer payment;
    private Integer paymentType;
    private Integer postage;
    private Integer status;
    private Timestamp paymentTime;
    private Timestamp sendTime;
    private Timestamp endTime;
    private Timestamp closeTime;
    private Timestamp createdAt;
    private Timestamp updatedAt;

 
    
    public long getUserId() {
        return userId;
    }

    public void setUserId(long userId) {
        this.userId = userId;
    }

   
    public long getProductId() {
        return productId;
    }

    public void setProductId(long productId) {
        this.productId = productId;
    }

    public Long getOrderNo() {
        return orderNo;
    }

    public void setOrderNo(Long orderNo) {
        this.orderNo = orderNo;
    }

 
    public Integer getPayment() {
        return payment;
    }

    public void setPayment(Integer payment) {
        this.payment = payment;
    }

   
    public Integer getPaymentType() {
        return paymentType;
    }

    public void setPaymentType(Integer paymentType) {
        this.paymentType = paymentType;
    }

 
    public Integer getPostage() {
        return postage;
    }

    public void setPostage(Integer postage) {
        this.postage = postage;
    }


    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }


    public Timestamp getPaymentTime() {
        return paymentTime;
    }

    public void setPaymentTime(Timestamp paymentTime) {
        this.paymentTime = paymentTime;
    }

   
    public Timestamp getSendTime() {
        return sendTime;
    }

    public void setSendTime(Timestamp sendTime) {
        this.sendTime = sendTime;
    }


    public Timestamp getEndTime() {
        return endTime;
    }

    public void setEndTime(Timestamp endTime) {
        this.endTime = endTime;
    }


    public Timestamp getCloseTime() {
        return closeTime;
    }

    public void setCloseTime(Timestamp closeTime) {
        this.closeTime = closeTime;
    }


    public Timestamp getCreatedAt() {
        return createdAt;
    }

    public void setCreatedAt(Timestamp createdAt) {
        this.createdAt = createdAt;
    }


    public Timestamp getUpdatedAt() {
        return updatedAt;
    }

    public void setUpdatedAt(Timestamp updatedAt) {
        this.updatedAt = updatedAt;
    }
}

 

类(OrderDTO)的实现

package com.wayknew.demo.order;

import com.alibaba.fastjson.annotation.JSONField;

import javax.persistence.*;
import java.sql.Timestamp;

public class OrderDTO {
    private long orderId;
    private long userId;
    private long productId;
    private Long orderNo;
    private Integer payment;
    private Integer paymentType;
    private Integer postage;
    private Integer status;
    private Timestamp paymentTime;
    private Timestamp sendTime;
    private Timestamp endTime;
    private Timestamp closeTime;
    @JSONField(format = "yyyy-MM-dd HH:mm")
    private Timestamp createdAt;
    @JSONField(format = "yyyy-MM-dd HH:mm")
    private Timestamp updatedAt;

    public long getOrderId() {
        return orderId;
    }

    public void setOrderId(long orderId) {
        this.orderId = orderId;
    }

    public long getUserId() {
        return userId;
    }

    public void setUserId(long userId) {
        this.userId = userId;
    }

    public long getProductId() {
        return productId;
    }

    public void setProductId(long productId) {
        this.productId = productId;
    }

    public Long getOrderNo() {
        return orderNo;
    }

    public void setOrderNo(Long orderNo) {
        this.orderNo = orderNo;
    }

    public Integer getPayment() {
        return payment;
    }

    public void setPayment(Integer payment) {
        this.payment = payment;
    }

    public Integer getPaymentType() {
        return paymentType;
    }

    public void setPaymentType(Integer paymentType) {
        this.paymentType = paymentType;
    }

    public Integer getPostage() {
        return postage;
    }

    public void setPostage(Integer postage) {
        this.postage = postage;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public Timestamp getPaymentTime() {
        return paymentTime;
    }

    public void setPaymentTime(Timestamp paymentTime) {
        this.paymentTime = paymentTime;
    }

    public Timestamp getSendTime() {
        return sendTime;
    }

    public void setSendTime(Timestamp sendTime) {
        this.sendTime = sendTime;
    }

    public Timestamp getEndTime() {
        return endTime;
    }

    public void setEndTime(Timestamp endTime) {
        this.endTime = endTime;
    }

    public Timestamp getCloseTime() {
        return closeTime;
    }

    public void setCloseTime(Timestamp closeTime) {
        this.closeTime = closeTime;
    }

    public Timestamp getCreatedAt() {
        return createdAt;
    }

    public void setCreatedAt(Timestamp createdAt) {
        this.createdAt = createdAt;
    }

    public Timestamp getUpdatedAt() {
        return updatedAt;
    }

    public void setUpdatedAt(Timestamp updatedAt) {
        this.updatedAt = updatedAt;
    }
}

 


类(OrderResponseDTO)的实现

package com.wayknew.demo.order.response;

import com.wayknew.demo.order.OrderDTO;

import java.util.List;

public class OrderResponseDTO {
    private Integer code;
    private String message;
    private OrderDTO order;
    private List<OrderDTO> orders;

    public List<OrderDTO> getOrders() {
        return orders;
    }

    public void setOrders(List<OrderDTO> orders) {
        this.orders = orders;
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public OrderDTO getOrder() {
        return order;
    }

    public void setOrder(OrderDTO order) {
        this.order = order;
    }
}

 


类(OrderListResponseDTO)的实现

 

package com.wayknew.demo.order.response;

import com.wayknew.demo.order.OrderDTO;

import java.util.List;

public class OrderListResponseDTO {
    private Integer code;
    private String message;
    private List<OrderDTO> orders;

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public List<OrderDTO> getOrders() {
        return orders;
    }

    public void setOrders(List<OrderDTO> orders) {
        this.orders = orders;
    }
}

 

类(OrderResponseDTO)的实现

package com.wayknew.demo.order.response;

import com.wayknew.demo.order.OrderDTO;

import java.util.List;

public class OrderResponseDTO {
    private Integer code;
    private String message;
    private OrderDTO order;
    private List<OrderDTO> orders;

    public List<OrderDTO> getOrders() {
        return orders;
    }

    public void setOrders(List<OrderDTO> orders) {
        this.orders = orders;
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public OrderDTO getOrder() {
        return order;
    }

    public void setOrder(OrderDTO order) {
        this.order = order;
    }
}

暂且不说这两个类的作用,我们来看看后续调用这两个类是怎么用的

 


类(OrderFactory)的实现

 

 

 

package com.wayknew.demo.order;

import com.sun.javafx.scene.control.skin.IntegerFieldSkin;
import com.wayknew.demo.order.response.OrderResponseDTO;

import java.util.ArrayList;
import java.util.List;

public class OrderFactory {

    static OrderDTO toOrderDTO(Order order) {
        OrderDTO orderDTO = new OrderDTO();

        orderDTO.setOrderId(order.getOrderId());
        orderDTO.setUserId(order.getUserId());
        orderDTO.setProductId(order.getProductId());
        orderDTO.setCloseTime(order.getCloseTime());
        orderDTO.setEndTime(order.getEndTime());
        orderDTO.setOrderNo(order.getOrderNo());
        orderDTO.setPayment(order.getPayment());
        orderDTO.setPaymentTime(order.getPaymentTime());
        orderDTO.setPostage(order.getPostage());
        orderDTO.setSendTime(order.getSendTime());
        orderDTO.setPaymentType(order.getPaymentType());
        orderDTO.setStatus(order.getStatus());
        orderDTO.setCreatedAt(order.getCreatedAt());
        orderDTO.setUpdatedAt(order.getUpdatedAt());
        return orderDTO;
    }

    static OrderResponseDTO successResponse(){
        OrderResponseDTO res = new OrderResponseDTO();
        res.setCode(0);
        res.setMessage("success");
        return res;

    }

    static OrderResponseDTO successResponse(Order order){
        OrderDTO orderDTO = toOrderDTO(order);
        OrderResponseDTO res = new OrderResponseDTO();
        res.setCode(0);
        res.setMessage("success");
        res.setOrder(orderDTO);
        return res;
    }

    static OrderResponseDTO successResponse(List<Order> orders){
        List<OrderDTO> orderDTOList = new ArrayList<>();
        orders.forEach(order -> {
            orderDTOList.add(toOrderDTO(order));
        });
            OrderResponseDTO res = new OrderResponseDTO();
            res.setCode(0);
            res.setMessage("success");
            res.setOrders(orderDTOList);
            return res;
    }

        static OrderResponseDTO errorResponse(Integer code, String message){
        OrderResponseDTO res = new OrderResponseDTO();
        res.setCode(code);
        res.setMessage(message);
        return res;

        }
 

}

 

 

类(OrderController)的实现

package com.wayknew.demo.order;


import com.wayknew.demo.order.request.OrderRequestDTO;
import com.wayknew.demo.order.response.OrderResponseDTO;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

@RestController
@RequestMapping(value="/api/v2")
public class OrderController {


    @Resource
    private OrderBO orderBO;

    @RequestMapping(value = "/order",method = RequestMethod.POST)
    public OrderResponseDTO createOrder(@RequestBody OrderRequestDTO body){
        try{
            Order order = orderBO.create(body.getUserId(),body.getProductId(),body.getOrderNo(),body.getPayment(),body.getPaymentType(),body.getPostage(),body.getStatus(),body.getPaymentTime(),body.getSendTime(),body.getEndTime(),body.getCloseTime());
            return OrderFactory.successResponse(order);
        }catch (Exception e){
            return OrderFactory.errorResponse(1,e.toString());
        }

    }


    @RequestMapping(value = "/order", method = RequestMethod.GET)
    public OrderResponseDTO getOrderList() {
        try {
            List<Order> orders = orderBO.getOrderList();
            return OrderFactory.successResponse(orders);
        } catch (Exception e) {
            return OrderFactory.errorResponse(2, e.toString());
        }
    }

    @RequestMapping(value = "/order/{orderId}", method = RequestMethod.GET)
    public OrderResponseDTO getOrderById(@PathVariable("orderId") Long orderId) {
        try {
            Order order = orderBO.getById(orderId);
            return OrderFactory.successResponse(order);
        } catch (Exception e) {
            return OrderFactory.errorResponse(3, e.toString());
        }
    }

    @RequestMapping(value = "/order/{orderId}", method = RequestMethod.PATCH)
    public OrderResponseDTO updateOrder(@PathVariable("orderId") Long orderId,
                                      @RequestBody OrderRequestDTO body) {
        try {
            Order order = orderBO.updateOrder(orderId, body);
            return OrderFactory.successResponse(order);
        } catch (Exception e) {
            return OrderFactory.errorResponse(3, e.toString());
        }
    }

    @RequestMapping(value = "/order/{orderId}", method = RequestMethod.DELETE)
    public OrderResponseDTO deleteOrder(@PathVariable("orderId") Long orderId) {
        try {
            orderBO.deleteOrder(orderId);
            return OrderFactory.successResponse();
        } catch (Exception e) {
            return OrderFactory.errorResponse(3, e.toString());
        }
    }
}

之后就可以用postman去测试crud了

 

 

 

 

 

 

 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值