how2j.cn

下载区
文件名 文件大小
请先登录 1m
增值内容 1m
1m
使用站长秘制下载工具
步骤 1 : 先运行,看到效果,再学习   
步骤 2 : 模仿和排错   
步骤 3 : 准备数据SQL   
步骤 4 : 页面截图   
步骤 5 : OrderItem   
步骤 6 : Order.java   
步骤 7 : OrderItemDAO   
步骤 8 : OrderDAO   
步骤 9 : OrderItemService   
步骤 10 : OrderService   
步骤 11 : Result   
步骤 12 : OrderController.java   
步骤 13 : listOrder.html   
步骤 14 : 查询功能讲解   
步骤 15 : 发货功能讲解   
步骤 16 : 增加,修改,删除功能   

步骤 1 :

先运行,看到效果,再学习

edit
增值内容,请先登录
完整的 Springboot 模仿天猫项目,使用 Springboot 、Vue.js、shiro、redis、elasticsearch 等一整套技术栈, 从无到有涵盖全部129个知识点,565个开发步骤, 充实 Springboot 项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
增值内容,请先登录
完整的 Springboot 模仿天猫项目,使用 Springboot 、Vue.js、shiro、redis、elasticsearch 等一整套技术栈, 从无到有涵盖全部129个知识点,565个开发步骤, 充实 Springboot 项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
增值内容,请先登录
完整的 Springboot 模仿天猫项目,使用 Springboot 、Vue.js、shiro、redis、elasticsearch 等一整套技术栈, 从无到有涵盖全部129个知识点,565个开发步骤, 充实 Springboot 项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
增值内容,请先登录
完整的 Springboot 模仿天猫项目,使用 Springboot 、Vue.js、shiro、redis、elasticsearch 等一整套技术栈, 从无到有涵盖全部129个知识点,565个开发步骤, 充实 Springboot 项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
页面截图
增值内容,请先登录
完整的 Springboot 模仿天猫项目,使用 Springboot 、Vue.js、shiro、redis、elasticsearch 等一整套技术栈, 从无到有涵盖全部129个知识点,565个开发步骤, 充实 Springboot 项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
OrderItem
package com.how2java.tmall.pojo; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; import com.fasterxml.jackson.annotation.JsonBackReference; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; @Entity @Table(name = "orderItem") @JsonIgnoreProperties({ "handler","hibernateLazyInitializer" }) public class OrderItem { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private int id; @ManyToOne @JoinColumn(name="pid") private Product product; @ManyToOne @JoinColumn(name="oid") private Order order; @ManyToOne @JoinColumn(name="uid") private User user; private int number; public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } public Product getProduct() { return product; } public void setProduct(Product product) { this.product = product; } public Order getOrder() { return order; } public void setOrder(Order order) { this.order = order; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public int getId() { return id; } public void setId(int id) { this.id = id; } }
增值内容,请先登录
完整的 Springboot 模仿天猫项目,使用 Springboot 、Vue.js、shiro、redis、elasticsearch 等一整套技术栈, 从无到有涵盖全部129个知识点,565个开发步骤, 充实 Springboot 项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
Order.java
package com.how2java.tmall.pojo; import java.util.Date; import java.util.List; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; import javax.persistence.Transient; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.how2java.tmall.service.OrderService; @Entity @Table(name = "order_") @JsonIgnoreProperties({ "handler","hibernateLazyInitializer" }) public class Order { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private int id; @ManyToOne @JoinColumn(name="uid") private User user; private String orderCode; private String address; private String post; private String receiver; private String mobile; private String userMessage; private Date createDate; private Date payDate; private Date deliveryDate; private Date confirmDate; private String status; @Transient private List<OrderItem> orderItems; @Transient private float total; @Transient private int totalNumber; @Transient private String statusDesc; public void setStatusDesc(String statusDesc) { this.statusDesc = statusDesc; } public String getStatusDesc(){ if(null!=statusDesc) return statusDesc; String desc ="未知"; switch(status){ case OrderService.waitPay: desc="待付"; break; case OrderService.waitDelivery: desc="待发"; break; case OrderService.waitConfirm: desc="待收"; break; case OrderService.waitReview: desc="等评"; break; case OrderService.finish: desc="完成"; break; case OrderService.delete: desc="刪除"; break; default: desc="未知"; } statusDesc = desc; return statusDesc; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getPost() { return post; } public void setPost(String post) { this.post = post; } public String getMobile() { return mobile; } public void setMobile(String mobile) { this.mobile = mobile; } public String getUserMessage() { return userMessage; } public void setUserMessage(String userMessage) { this.userMessage = userMessage; } public Date getCreateDate() { return createDate; } public void setCreateDate(Date createDate) { this.createDate = createDate; } public Date getPayDate() { return payDate; } public void setPayDate(Date payDate) { this.payDate = payDate; } public Date getDeliveryDate() { return deliveryDate; } public void setDeliveryDate(Date deliveryDate) { this.deliveryDate = deliveryDate; } public Date getConfirmDate() { return confirmDate; } public void setConfirmDate(Date confirmDate) { this.confirmDate = confirmDate; } public String getReceiver() { return receiver; } public void setReceiver(String receiver) { this.receiver = receiver; } public String getOrderCode() { return orderCode; } public void setOrderCode(String orderCode) { this.orderCode = orderCode; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public List<OrderItem> getOrderItems() { return orderItems; } public void setOrderItems(List<OrderItem> orderItems) { this.orderItems = orderItems; } public float getTotal() { return total; } public void setTotal(float total) { this.total = total; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public int getTotalNumber() { return totalNumber; } public void setTotalNumber(int totalNumber) { this.totalNumber = totalNumber; } }
增值内容,请先登录
完整的 Springboot 模仿天猫项目,使用 Springboot 、Vue.js、shiro、redis、elasticsearch 等一整套技术栈, 从无到有涵盖全部129个知识点,565个开发步骤, 充实 Springboot 项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package com.how2java.tmall.dao; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import com.how2java.tmall.pojo.Order; import com.how2java.tmall.pojo.OrderItem; import com.how2java.tmall.pojo.Product; import com.how2java.tmall.pojo.User; public interface OrderItemDAO extends JpaRepository<OrderItem,Integer>{ List<OrderItem> findByOrderOrderByIdDesc(Order order); }
package com.how2java.tmall.dao;
 
import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;

import com.how2java.tmall.pojo.Order;
import com.how2java.tmall.pojo.OrderItem;
import com.how2java.tmall.pojo.Product;
import com.how2java.tmall.pojo.User;

public interface OrderItemDAO extends JpaRepository<OrderItem,Integer>{
	List<OrderItem> findByOrderOrderByIdDesc(Order order);
}
增值内容,请先登录
完整的 Springboot 模仿天猫项目,使用 Springboot 、Vue.js、shiro、redis、elasticsearch 等一整套技术栈, 从无到有涵盖全部129个知识点,565个开发步骤, 充实 Springboot 项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package com.how2java.tmall.dao; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import com.how2java.tmall.pojo.Order; import com.how2java.tmall.pojo.User; public interface OrderDAO extends JpaRepository<Order,Integer>{ }
package com.how2java.tmall.dao;
 
import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;

import com.how2java.tmall.pojo.Order;
import com.how2java.tmall.pojo.User;

public interface OrderDAO extends JpaRepository<Order,Integer>{
}
增值内容,请先登录
完整的 Springboot 模仿天猫项目,使用 Springboot 、Vue.js、shiro、redis、elasticsearch 等一整套技术栈, 从无到有涵盖全部129个知识点,565个开发步骤, 充实 Springboot 项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package com.how2java.tmall.service; import com.how2java.tmall.dao.OrderItemDAO; import com.how2java.tmall.pojo.Order; import com.how2java.tmall.pojo.OrderItem; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class OrderItemService { @Autowired OrderItemDAO orderItemDAO; @Autowired ProductImageService productImageService; public void fill(List<Order> orders) { for (Order order : orders) fill(order); } public void fill(Order order) { List<OrderItem> orderItems = listByOrder(order); float total = 0; int totalNumber = 0; for (OrderItem oi :orderItems) { total+=oi.getNumber()*oi.getProduct().getPromotePrice(); totalNumber+=oi.getNumber(); productImageService.setFirstProdutImage(oi.getProduct()); } order.setTotal(total); order.setOrderItems(orderItems); order.setTotalNumber(totalNumber); } public List<OrderItem> listByOrder(Order order) { return orderItemDAO.findByOrderOrderByIdDesc(order); } }
增值内容,请先登录
完整的 Springboot 模仿天猫项目,使用 Springboot 、Vue.js、shiro、redis、elasticsearch 等一整套技术栈, 从无到有涵盖全部129个知识点,565个开发步骤, 充实 Springboot 项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package com.how2java.tmall.service; import com.how2java.tmall.dao.OrderDAO; import com.how2java.tmall.pojo.Order; import com.how2java.tmall.pojo.OrderItem; import com.how2java.tmall.util.Page4Navigator; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import java.util.List; @Service public class OrderService { public static final String waitPay = "waitPay"; public static final String waitDelivery = "waitDelivery"; public static final String waitConfirm = "waitConfirm"; public static final String waitReview = "waitReview"; public static final String finish = "finish"; public static final String delete = "delete"; @Autowired OrderDAO orderDAO; public Page4Navigator<Order> list(int start, int size, int navigatePages) { Sort sort = new Sort(Sort.Direction.DESC, "id"); Pageable pageable = new PageRequest(start, size,sort); Page pageFromJPA =orderDAO.findAll(pageable); return new Page4Navigator<>(pageFromJPA,navigatePages); } public void removeOrderFromOrderItem(List<Order> orders) { for (Order order : orders) { removeOrderFromOrderItem(order); } } private void removeOrderFromOrderItem(Order order) { List<OrderItem> orderItems= order.getOrderItems(); for (OrderItem orderItem : orderItems) { orderItem.setOrder(null); } } public Order get(int oid) { return orderDAO.findOne(oid); } public void update(Order bean) { orderDAO.save(bean); } }
增值内容,请先登录
完整的 Springboot 模仿天猫项目,使用 Springboot 、Vue.js、shiro、redis、elasticsearch 等一整套技术栈, 从无到有涵盖全部129个知识点,565个开发步骤, 充实 Springboot 项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package com.how2java.tmall.util; public class Result { public static int SUCCESS_CODE = 0; public static int FAIL_CODE = 1; int code; String message; Object data; private Result(int code, String message, Object data) { this.code = code; this.message = message; this.data = data; } public static Result success() { return new Result(SUCCESS_CODE,null,null); } public static Result success(Object data) { return new Result(SUCCESS_CODE,"",data); } public static Result fail(String message) { return new Result(FAIL_CODE,message,null); } public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public Object getData() { return data; } public void setData(Object data) { this.data = data; } }
步骤 12 :

OrderController.java

edit
增值内容,请先登录
完整的 Springboot 模仿天猫项目,使用 Springboot 、Vue.js、shiro、redis、elasticsearch 等一整套技术栈, 从无到有涵盖全部129个知识点,565个开发步骤, 充实 Springboot 项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package com.how2java.tmall.web; import com.how2java.tmall.pojo.Order; import com.how2java.tmall.service.OrderItemService; import com.how2java.tmall.service.OrderService; import com.how2java.tmall.util.Page4Navigator; import com.how2java.tmall.util.Result; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.io.IOException; import java.util.Date; @RestController public class OrderController { @Autowired OrderService orderService; @Autowired OrderItemService orderItemService; @GetMapping("/orders") public Page4Navigator<Order> list(@RequestParam(value = "start", defaultValue = "0") int start,@RequestParam(value = "size", defaultValue = "5") int size) throws Exception { start = start<0?0:start; Page4Navigator<Order> page =orderService.list(start, size, 5); orderItemService.fill(page.getContent()); orderService.removeOrderFromOrderItem(page.getContent()); return page; } @PutMapping("deliveryOrder/{oid}") public Object deliveryOrder(@PathVariable int oid) throws IOException { Order o = orderService.get(oid); o.setDeliveryDate(new Date()); o.setStatus(OrderService.waitConfirm); orderService.update(o); return Result.success(); } }
增值内容,请先登录
完整的 Springboot 模仿天猫项目,使用 Springboot 、Vue.js、shiro、redis、elasticsearch 等一整套技术栈, 从无到有涵盖全部129个知识点,565个开发步骤, 充实 Springboot 项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head th:include="include/admin/adminHeader::html('订单管理')" ></head> <body> <div th:replace="include/admin/adminNavigator::html" ></div> <script> $(function(){ var data4Vue = { uri:'orders', beans: [], pagination:{} }; //ViewModel var vue = new Vue({ el: '#workingArea', data: data4Vue, mounted:function(){ //mounted 表示这个 Vue 对象加载成功了 this.list(0); }, methods: { list:function(start){ var url = this.uri+ "?start="+start; axios.get(url).then(function(response) { vue.pagination = response.data; vue.beans = response.data.content; }); }, showOrderItems: function(order){ var id = order.id; $("#orderItemsTR"+id).show(); }, jump: function(page){ jump(page,vue); //定义在adminHeader.html 中 }, jumpByNumber: function(start){ jumpByNumber(start,vue); }, deliveryOrder:function(order,e){ var url = "deliveryOrder/"+order.id; axios.put(url).then(function(response) { $(e.target).hide(); }); } } }); Vue.filter('formatDateFilter', function (value, formatString) { if(null==value) return ""; formatString = formatString || 'YYYY-MM-DD HH:mm:ss'; return moment(value).format(formatString); }); }); </script> <div id="workingArea" > <h1 class="label label-info" >订单管理</h1> <br> <br> <div class="listDataTableDiv"> <table class="table table-striped table-bordered table-hover table-condensed"> <thead> <tr class="success"> <th>状态</th> <th>金额</th> <th width="100px">商品数量</th> <th width="100px">买家名称</th> <th>创建时间</th> <th>支付时间</th> <th>发货时间</th> <th>确认收货时间</th> <th width="120px">操作</th> </tr> </thead> <tbody> <!-- 在业务上需要一个订单数据产生两行 tr, 此时就不能在 tr上进行 v-for, 而需要用 template 标签 --> <template v-for="bean in beans "> <tr > <td> {{bean.statusDesc}} </td> <td> {{bean.total}} </td> <td> {{bean.totalNumber}} </td> <td> {{bean.user.name}} </td> <td> {{bean.createDate | formatDateFilter}} </td> <td> {{bean.payDate | formatDateFilter}} </td> <td> {{bean.deliveryDate | formatDateFilter}} </td> <td> {{bean.confirmDate | formatDateFilter}} </td> <td> <button @click="showOrderItems(bean)" class="orderPageCheckOrderItems btn btn-primary btn-xs">查看详情</button> <button v-if="bean.status=='waitDelivery'" @click="deliveryOrder(bean,$event)" class="btn btn-primary btn-xs">发货</button> </td> </tr> <tr class="orderPageOrderItemTR" :id="'orderItemsTR'+bean.id"> <td colspan="10" align="center"> <div class="orderPageOrderItem"> <table width="800px" align="center" class="orderPageOrderItemTable"> <tr v-for="orderItem in bean.orderItems"> <td align="left"> <img width="40px" height="40px" :src="'img/productSingle/'+orderItem.product.firstProductImage.id+'.jpg'"> </td> <td> <a :href="'product?product.id='+orderItem.product.id"> <span>{{orderItem.product.name}}</span> </a> </td> <td align="right"> <span class="text-muted">{{orderItem.number}}个</span> </td> <td align="right"> <span class="text-muted">单价:¥{{orderItem.product.promotePrice}}</span> </td> </tr> </table> </div> </td> </tr> </template> </tbody> </table> </div> <div th:replace="include/admin/adminPage::html" ></div> </div> <div th:replace="include/admin/adminFooter::html" ></div> </body> </html>
步骤 14 :

查询功能讲解

edit
增值内容,请先登录
完整的 Springboot 模仿天猫项目,使用 Springboot 、Vue.js、shiro、redis、elasticsearch 等一整套技术栈, 从无到有涵盖全部129个知识点,565个开发步骤, 充实 Springboot 项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
查询功能讲解
@GetMapping("/orders") public Page4Navigator<Order> list(@RequestParam(value = "start", defaultValue = "0") int start,@RequestParam(value = "size", defaultValue = "5") int size) throws Exception { start = start<0?0:start; Page4Navigator<Order> page =orderService.list(start, size, 5); orderItemService.fill(page.getContent()); orderService.removeOrderFromOrderItem(page.getContent()); return page; }
list:function(start){ var url = this.uri+ "?start="+start; axios.get(url).then(function(response) { vue.pagination = response.data; vue.beans = response.data.content; }); }, showOrderItems: function(order){ var id = order.id; $("#orderItemsTR"+id).show(); }, <template v-for="bean in beans "> 。。。 </template> <tr v-for="orderItem in bean.orderItems"> </tr> <button @click="showOrderItems(bean)" class="orderPageCheckOrderItems btn btn-primary btn-xs">查看详情</button>
步骤 15 :

发货功能讲解

edit
增值内容,请先登录
完整的 Springboot 模仿天猫项目,使用 Springboot 、Vue.js、shiro、redis、elasticsearch 等一整套技术栈, 从无到有涵盖全部129个知识点,565个开发步骤, 充实 Springboot 项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
发货功能讲解
deliveryOrder:function(order,e){ var url = "deliveryOrder/"+order.id; axios.put(url).then(function(response) { $(e.target).hide(); }); } <button v-if="bean.status=='waitDelivery'" @click="deliveryOrder(bean,$event)" class="btn btn-primary btn-xs">发货</button>
                deliveryOrder:function(order,e){
                    var url =  "deliveryOrder/"+order.id;
                    axios.put(url).then(function(response) {
                        $(e.target).hide();
                    });
                }

<button v-if="bean.status=='waitDelivery'" @click="deliveryOrder(bean,$event)" class="btn btn-primary btn-xs">发货</button>
@PutMapping("deliveryOrder/{oid}") public Object deliveryOrder(@PathVariable int oid) throws IOException { Order o = orderService.get(oid); o.setDeliveryDate(new Date()); o.setStatus(OrderService.waitConfirm); orderService.update(o); return Result.success(); }

    @PutMapping("deliveryOrder/{oid}")
    public Object deliveryOrder(@PathVariable int oid) throws IOException {
        Order o = orderService.get(oid);
        o.setDeliveryDate(new Date());
        o.setStatus(OrderService.waitConfirm);
        orderService.update(o);
        return Result.success();
    }
步骤 16 :

增加,修改,删除功能

edit
增值内容,请先登录
完整的 Springboot 模仿天猫项目,使用 Springboot 、Vue.js、shiro、redis、elasticsearch 等一整套技术栈, 从无到有涵盖全部129个知识点,565个开发步骤, 充实 Springboot 项目经验,为简历加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢


HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。


问答区域    
2019-12-24 关于Order类的Transient字段问题
sparksun007

// 为什么这三个不在数据库中有映射呢,这样查询起来不是更方便吗? @Transient private double total; //订单总金额 @Transient private int totalNumber; //订单总商品数量 @Transient private List<OrderItem> orderItems; 还有Product类的 @Transient private ProductImage firstProductImage; 这个属性写到数据库不好吗?不然就必须在需要用到产品的产品图片时,单独手动设置productImageService.setFirstProductImage(orderItem.getProduct());!好麻烦。。。




2 个答案

sparksun007
答案时间:2019-12-25
不太懂呀。。。哪些和哪些是相同数据呀,就是可以根据其他表里的数据间接计算出来的数据都叫相同数据?比如订单的数量和金额可以根据数据库中订单项的数量和金额间接计算出来,所以就叫“相同数据”,就不能放数据库里? 可我还是觉得放数据库里查询确实更方便啊【不然每次使用到时都需要现计算】,而且订单提交后就不能再增删改订单项的数据了吧,所以订单内容除了status和各种日期外都固定了,怎么存在的脏数据问题呢?

how2j
答案时间:2019-12-25
根据数据库设计的第三范式,相同数据不应该多次出现,所以不能放在数据库里,否则容易带来脏数据。



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2019-12-24 $(e.target).hide(); 和v-if="bean.status=='waitDelivery'" 这俩功能冲突了吧
sparksun007

实现的是同一件事啊,只用其中之一就行了吧




2 个答案

sparksun007
答案时间:2019-12-25
sendProduct:function(order){ var url = this.url+"/"+order.id; order.status = "waitConfirm"; axios.put(url,order).then((response)=>{ this.list(0); }); } <button v-if="bean.status=='waitDelivery'" type="button" @click="sendProduct(bean)">发货</button> 哦我记起来了,我是这样实现的,我自己修改了order.status,所以没用hide功能。。。

how2j
答案时间:2019-12-25
不是,去掉之一,试试看还能不能用。 你以前提问之前都要思考的,现在怎么都不自己先思考一下了呀?



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2019-12-18 $("#orderItemsTR"+id).show(); 请问站长,这段代码是什么意思?
2019-12-12 关于数据类型
2019-12-08 filter问题
2019-12-02 遍历出来的orderItems信息默认是隐藏的
2019-11-28 filter问题
2019-11-28 filter问题
2019-10-15 关于业务逻辑的问题
2019-09-30 我想看看站长遇到的bug是什么
2019-09-27 接口OrderItemDAO方法命名问题
2019-09-26 关于 Result 类的线程安全疑虑
2019-09-23 这个章节中的productImage类也会导致removeOrderFromOrderItem出现的问题
2019-09-17 想问问站长碰到的这个bug是什么~
2019-08-25 @transient
2019-08-23 OrderItem DAO
2019-08-23 OrderItemService里的fill方法疑问
2019-08-22 关于第10步骤的疑问
2019-08-19 第七个步骤
2019-07-18 orderItem不能引用javax.persistence.*
2019-06-19 点击发货后发货时间的显示问题
2019-06-19 点击发货后发货时间的显示问题
2019-06-18 站长大,提一个小建议,可以使用一个判断来显示和隐藏OrderItem页面
2019-05-22 还是那个问题,订单总额、订单数量存在哪里?
2019-05-20 那这些订单总额、总数量的数据保存到哪儿了?
2019-05-06 订单管理页面显示问题
2019-03-29 订单信息里是不是应该添加订单号、买家电话、地址。
2019-03-25 这个order里的orderitme不是手动填充的嘛,为什么就子子孙孙了。
2019-02-19 能收到json数据,但页面显示不出来
2019-02-13 订单详情里点击产品名称跳转失败
2019-01-28 formatString有疑问
2018-12-31 @JsonIgnoreProperties和redis的问题
2018-12-28 removeOrderFromOrderItem 的问题
2018-12-27 OrderItemService里的代码
2018-12-27 不懂
2018-12-07 关于removeOrderFromOrderItem的问题
2018-11-12 OrderItemService中的代码
2018-11-12 前台没有显示数据
2018-11-08 有个问题需要各位大佬解答下
2018-10-30 关于实体类Order.java的一些问题




提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 实践项目-天猫整站Springboot-订单管理 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 982790551
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: https://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图