為什么我的商品創建頁面就一直報錯,數據庫里面也沒插入任何數據。。
?/**
?*?@author?Mib_du
?*?@creat?2019-06-03-9:55
?*/
@Service
public?class?ItemServiceImpl?implements?ItemService?{
????//使用validator校驗輸入參數
????@Autowired
????private?ValidatorImpl?validator;
????@Autowired
????private?ItemDOMapper?itemDOMapper;
????@Autowired
????private?ItemStockDOMapper?itemStockDOMapper;
????//itemmodel->itemdataobject
????private?ItemDO?itemDOconvertFromItemModel(ItemModel?itemModel)?{
????????if(itemModel?==?null)
????????????return?null;
????????ItemDO?itemDO?=?new?ItemDO();
????????BeanUtils.copyProperties(itemModel,itemDO);
????????itemDO.setPrice(itemModel.getPrice().doubleValue());
????????return?itemDO;
????}
????//itemstockmodel->itemdataobject
????private?ItemStockDO?convertFromItemModel(ItemModel?itemModel){
????????if(itemModel?==?null)
????????????return?null;
????????ItemStockDO?itemStockDO?=?new?ItemStockDO();
????????itemStockDO.setItemId(itemModel.getId());
????????itemStockDO.setStock(itemModel.getStock());
????????return?itemStockDO;
????}
????@Override
????@Transactional
????public?ItemModel?createItem(ItemModel?itemModel)?throws?BusinessException?{
????????//校驗入參
????????ValidationResult?result?=?validator.validate(itemModel);
????????if(result.isHasErrors()){
????????????throw?new?BusinessException(EnumBusinessError.PARAMETER_VALIDATION_ERROR,result.getErrorMsg());
????????}
????????//轉化itemmodel->dataobject
????????ItemDO?itemDO?=?this.itemDOconvertFromItemModel(itemModel);
????????//寫入數據庫
????????itemDOMapper.insertSelective(itemDO);
????????itemModel.setId(itemDO.getId());
????????ItemStockDO?itemStockDO?=?this.convertFromItemModel(itemModel);
????????itemStockDOMapper.insertSelective(itemStockDO);
????????//返回創建完成的對象
????????return?this.getItemById(itemModel.getId());
????}
????@Override
????public?List<ItemModel>?listItem(Integer?id)?{
????????return?null;
????}
????@Override
????public?ItemModel?getItemById(Integer?id)?{
????????ItemDO?itemDO?=?itemDOMapper.selectByPrimaryKey(id);
????????if(itemDO?==?null)
????????????return?null;
????????//操作獲得庫存數量
????????ItemStockDO?itemStockDO?=?itemStockDOMapper.selectByItemId(itemDO.getId());
????????//將dataobject->model
????????ItemModel?itemModel?=?convertFromDataObject(itemDO,itemStockDO);
????????return?itemModel;
????}
????//dataobject?-->?model
????private?ItemModel?convertFromDataObject(ItemDO?itemDO?,?ItemStockDO?itemStockDO){
????????ItemModel?itemModel?=?new?ItemModel();
????????BeanUtils.copyProperties(itemDO,itemModel);
????????itemModel.setPrice(new?BigDecimal(itemDO.getPrice()));
????????itemModel.setStock(itemStockDO.getStock());
????????return?itemModel;
????}
}執行到
itemDOMapper.insertSelective(itemDO);
這行就會報錯,瀏覽器會返回下面這個錯誤信息:

下面這個是報錯的時候報錯信息:

我調試了一下,發現斷點之前的數據都是傳進itemDO里了的,但是就是在執行inSertselective(itemDO)這句話時就會報錯了。
有哪位大佬能幫我解答下嗎 謝謝??!
2019-06-05
媽喲我也是這個錯誤,折騰了一晚上了,謝謝樓主
2019-06-04
哎....我加了個try-catch捕獲了一下這句話的異常,發現異常信息里輸出的是數據庫里的sales字段沒有初始值,打開數據庫一看果然sales字段沒有設置默認初始值為0,設置好后再運行,OK,完美~? ??
真是個深刻的教訓啊,不會debug找這個小錯誤找了一晚上.....
2019-06-03
前端代碼: ?<!DOCTYPE?html> <html> <head> <meta?charset="utf-8"> <link?rel="stylesheet"?type="text/css"?href="static/assets/global/plugins/bootstrap/css/bootstrap.min.css"/> <link?rel="stylesheet"?type="text/css"?href="static/assets/global/css/components.css"/> <link?rel="stylesheet"?type="text/css"?href="static/assets/admin/pages/css/login.css"/> <script?type="text/javascript"?src="static/assets/global/plugins/jquery-1.11.0.min.js"></script> <title></title> </head> <body?class="login"> <div?class="content"> <h3?class="form-title">創建商品</h3> <div?class="form-group"> <label?class="control-label">商品名</label> <div> <input?class="form-control"?type="text"?placeholder="商品名"?id="title"?name="title"/> </div> </div> <div?class="form-group"> <label?class="control-label">商品描述</label> <div> <input?class="form-control"?type="text"?placeholder="商品描述"?id="description"?name="description"/> </div> </div> <div?class="form-group"> <label?class="control-label">價格</label> <div> <input?class="form-control"?type="text"?placeholder="價格"?id="price"?name="price"/> </div> </div> <div?class="form-group"> <label?class="control-label">圖片</label> <div> <input?class="form-control"?type="text"?placeholder="圖片"?id="imgUrl"?name="imgUrl"/> </div> </div> <div?class="form-group"> <label?class="control-label">庫存</label> <div> <input?class="form-control"?type="text"?placeholder="庫存"?id="stock"?name="stock"/> </div> <div?class="form-actions"> <button?class="btn?blue"?id="create"?type="submit"> 創建商品 </button> </div> </div> </body> <script> jQuery(document).ready(function(){ //綁定otp的click事件用于向后端發送獲取手機號驗證碼的請求 $("#create").on("click",function(){ var?title?=?$("#title").val(); var?description?=?$("#description").val(); var?imgUrl?=?$("#imgUrl").val(); var?price?=?$("#price").val(); var?stock?=?$("#stock").val(); if(title==null?||?title==""){ alert("商品名不能為空!"); return?false; } if(description==null?||?description==""){ alert("描述不能為空!"); return?false; } if(imgUrl==null?||?imgUrl==""){ alert("圖片不能為空!"); return?false; } if(price==null?||?price==""){ alert("價格不能為空!"); return?false; } if(stock==null?||?stock==""){ alert("庫存不能為空!"); return?false; } $.ajax({ type:"POST", contenttype:"application/x-www-form-urlencoded", url:"http://localhost:8090/item/create", data:{ "title":title, "description":description, "imgUrl":imgUrl, "price":price, "stock":stock }, xhrFields:{withCredentials:true}, success:function(data){ if(data.status?=="success"){ alert("創建成功!"); }else{ alert("創建失敗!原因是"+data.data.errMsg); } }, error:function(data){ alert("創建失敗!原因為"+data.responseText); } }); return?false; }); }); </script> </html>