时间: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)
标签: