时间:2021-07-01 10:21:17 帮助过:3人阅读
背景:SSH视频真是个强大的视频,里面涉及的知识广,符合当今的网商趋势。视频里面的老师思路清晰,分析需求也相当了得。当然,跟着这个视频的思路走,自己很容易理解里面的内容。但是跟着走也能出错,我也是醉了,下面介绍一下我的奇葩经历。
一、问题出世
将订单提交到数据库的时候出现了下面的错误,说什么不能将数据插入到数据库中,刚开始的时候以为是自己写错了,反复查询多遍,但是从vo到dao到service到action,在就是JSP页面、applicationContext.xml和Struts.xml都没有错,到底是怎么回事呢???
二、解决方法
经过和“先人”们交流,明白,不能插入到数据库的原因是:在订单生成时,其时间戳不能正确生成。后来果断换掉原来的代码,然后就成功啦,提交订单的时候同时插入到两张表(order表和orderitem表)中,棒棒哒!
1、在OrderAction.java中写一个获取时间的方法
//获取时间
public static Date getNowDate() throws java.text.ParseException {
Date currentTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = formatter.format(currentTime);
Date date1=formatter.parse(dateString);
return date1;
}
//生成订单的方法
public String save() throws ParseException{
//1、保存数据到数据库
//订单数据的补全操作
order.setOrdertime(getNowDate());
order.setState(1); //1:待付款 2:已经付款,但是没有发货 3:已经发货,没有确认收货 4:交易完成
//总计的数据是购物车中信息
Cart cart =(Cart) ServletActionContext.getRequest().getSession().getAttribute("cart");
if(cart == null){
this.addActionError("亲,您还没有购物,请先去购物!");
return "msg";
}
order.setTotal(cart.getTotal());
//设置订单中的订单项
for (CartItem cartItem : cart.getCartItems()){
OrderItem orderItem = new OrderItem();
orderItem.setCount(cartItem.getCount());
orderItem.setSubtotal(cartItem.getSubtotal());
orderItem.setProduct(cartItem.getProduct());
orderItem.setOrder(order);
order.getOrderItems().add(orderItem);
}
//订单所属的用户
User existUser = (User)ServletActionContext.getRequest().getSession().getAttribute("existUser");
if(existUser == null){
this.addActionError("亲,您还没有登录,请先去登录!");
return "login";
}
order.setUser(existUser);
orderService.save(order);
//2、将订单对象显示到页面上
//通过值栈的方式显示:因为Order显示的对象是模型驱动的对象
//清空购物车
cart.clearCart();
return "saveSuccess";
}
提交代码后查看数据库,哈哈
,订单数据妥妥的在数据库中。
四、学习心得
1、有时候也许不是你的错,但是你可以为遇到的错误找到合理的解决方案。
2、沟通的重要性,没有事情是沟通解决不了的,解决问题的关键性因素就在与沟通。
3、遇到问题不气馁,是良好的生活态度。
Java大牛养成记(6)——将订单提交到数据库出错(Could not insert)
标签: