JAVA-入库条件更新SQL相同ID库存数量增加

目录

前言:

正题:

数据库表设计:

一、Controller层

二、Service层

三、Dao层


前言:

在写更新语句时没有成功,总报下图错误,为防止再出现写更新语句时的语句错误,特此总结一篇关于条件更新并增加的SQL

之前的错误条件更新SQL,请注意!

String update_sql = "update tb_commodity set (?,?,?,?,?)where id = ?";

正题:

下图为业务需求

更改之后

主要是SQL语句的书写,但是入库需要判断是否有相同ID,相同的走更新SQL,不同直接Insert

数据库表设计:

一、Controller层

	// 向库存表中插入数据
	    private void inputCommodity(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	        int id = Integer.parseInt(req.getParameter("commodityId").toString());
	        double price = Double.parseDouble(req.getParameter("price").toString());
	        String forwardPage = managerPage;
	        String name = req.getParameter("name");
	        String specification = req.getParameter("specification");
	        String units = req.getParameter("units");
	        int stock = Integer.parseInt(req.getParameter("stock").toString());
	        Commodity commodity = new Commodity();
	        commodity.setId(id);
	        commodity.setPrice(price);
	        commodity.setName(name);
	        commodity.setUnits(units);
	        commodity.setSpecification(specification);
	        commodity.setStock(stock);
	        //进货管理添加:1.相同商品条码(更新仓库表走update)2.不同商品条码(直接添加走insert)
	        boolean booleann = supermarketService.inputCommodity(commodity);
	        if (booleann == false){
	            forwardPage = commodityPage;
	        }
	        else{
	            forwardPage = commodityPage;
	        }
	        List<Commodity> commodities = supermarketService.getCommodities();
	        RequestDispatcher view = req.getRequestDispatcher(forwardPage);
	        req.setAttribute("commodities", commodities);
	        view.forward(req, resp);
    }

二、Service层

	// 进货管理添加:1.相同商品条码(更新仓库表走update)2.不同商品条码(直接添加走insert)
	    public boolean inputCommodity(Commodity commodity){
	        // 先查询一下仓库表的数据
	        Commodity commodity1 = superMarketDao.getCommodity(commodity.getId());
	        // 如果相同进行更新
	        if (commodity1 !=null){
	            superMarketDao.updateCommodity(commodity);
	            return false;
	        }
	        // 商品条码不同直接进行添加
	        else{
	            superMarketDao.insertCommodity(commodity);
	            return true;
	        }
    }

三、Dao层

这里主要介绍下更新的SQL,插入和查询很简单。

	// 更新库存表---主要是添加货有相同ID把库存数量进行累加
	    public void updateCommodity(Commodity commodity){
	        // 只更新具有相同ID的 1.商品名称 2.规格等级 3.单价 4.售价--进行更新 5.数量进行累加
	        String update_sql = "update tb_commodity set name=?,specification=?,units=?,price=?,stock = stock+? where id = ? ";
	        Object[] update_paramValue = {commodity.getName(),commodity.getSpecification(),commodity.getUnits(),commodity.getPrice(),commodity.getStock(),commodity.getId()};
	        super.update(update_sql,update_paramValue);
    }

 

  • 39
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 38
    评论
### 回答1: 在JSP中实现入库功能,需要使用Java编写后端逻辑,同时在前端JSP页面中添加表单进行数据输入。 首先,我们需要创建一个包含id、供应商名称、商品名、类型和入库数量Java类,例如: ```java public class Product { private int id; private String supplier; private String name; private String type; private int quantity; // 省略getter和setter方法 } ``` 然后,在JSP页面中,我们可以使用表单来收集用户输入的商品信息,并将其传递到后端Java代码中进行处理。例如: ```html <form action="add_product.jsp" method="post"> <label for="supplier">供应商名称:</label> <input type="text" id="supplier" name="supplier"><br> <label for="name">商品名:</label> <input type="text" id="name" name="name"><br> <label for="type">类型:</label> <input type="text" id="type" name="type"><br> <label for="quantity">入库数量:</label> <input type="number" id="quantity" name="quantity"><br> <input type="submit" value="添加"> </form> ``` 在提交表单时,我们将表单数据POST到add_product.jsp页面中。我们需要在该页面中编写后端Java代码来处理表单数据,同时向库存表中添加新商品的信息。 在add_product.jsp页面中,我们可以通过以下代码获取表单数据: ```java String supplier = request.getParameter("supplier"); String name = request.getParameter("name"); String type = request.getParameter("type"); int quantity = Integer.parseInt(request.getParameter("quantity")); ``` 然后,我们可以创建一个新的Product对象来保存商品信息,并将其插入到数据库中: ```java Product product = new Product(); product.setSupplier(supplier); product.setName(name); product.setType(type); product.setQuantity(quantity); // 将商品信息插入到数据库中 ProductDao productDao = new ProductDao(); productDao.addProduct(product); ``` 最后,我们还需要将新商品的信息添加到库存表中。我们可以在addProduct方法中添加一个参数,用于指定是否同时更新库存表: ```java public void addProduct(Product product, boolean updateStock) { // 将商品信息插入到产品表中 // ... if (updateStock) { // 更新库存表 StockDao stockDao = new StockDao(); Stock stock = stockDao.getStockByProduct(product.getName(), product.getType()); if (stock == null) { stock = new Stock(); stock.setName(product.getName()); stock.setType(product.getType()); stock.setQuantity(product.getQuantity()); stockDao.addStock(stock); } else { stock.setQuantity(stock.getQuantity() + product.getQuantity()); stockDao.updateStock(stock); } } } ``` 当我们添加新商品时,我们可以调用addProduct方法,并将updateStock参数设置为true,以便同时更新库存表: ```java productDao.addProduct(product, true); ``` 这样,我们就完成了JSP页面的入库功能,并将新商品信息添加到了库存表中。 ### 回答2: 要实现JSP实现入库功能,可以按照以下步骤进行操作: 1. 创建一个数据库表用于存储入库信息,包括字段:id、供应商名称、商品名、类型、入库数量。 2. 创建一个JSP页面,用于显示入库信息的表单。 3. 在JSP页面中使用<form>标签创建表单,包括输入字段:供应商名称、商品名、类型、入库数量。 4. 在表单中添加一个提交按钮,用于将输入的入库信息发送到服务器。 5. 创建一个JavaBean类,用于封装入库信息的数据。 6. 在JSP页面中使用JavaBean对象的set方法将表单中的数据赋值给JavaBean对象。 7. 在JSP页面中使用JSTL或者原生的Java代码将JavaBean对象的数据持久化到数据库中,即将入库信息插入到入库信息表中。 8. 使用JSTL或者原生的Java代码将入库信息中的id、商品名、类型、入库数量插入到库存表中。 总结起来,JSP实现入库功能的核心就是通过表单获取用户输入的入库信息,然后将这些信息插入到入库信息表和库存表中。关键是要合理使用JSP、JavaBean和数据库操作来实现数据的持久化和插入。以上所述只是一个大致的思路,具体的实现方法还需根据实际需求和技术栈来进行调整和优化。 ### 回答3: JSP实现入库功能,需要建立一个表格来收集增加商品入库的信息。表格的字段包括id(商品编号),供应商名称,商品名称,类型和入库数量。同时,还需要将id,商品名称,类型和入库数量增加库存表中。 首先,在JSP页面中创建一个表单,包含id、供应商名称、商品名称、类型和入库数量的输入框。用户输入完毕后,点击提交按钮。 接下来,在JSP页面中编写与表单提交相关的Java代码。在Java代码中,首先获取表单中用户输入的id、供应商名称、商品名称、类型和入库数量,并将它们存储到相应的变量中。 然后,通过数据库连接,将这些信息插入到入库表中。可以使用SQL语句将这些信息插入到入库表中的相应字段。 接着,将id、商品名称、类型和入库数量信息插入到库存表中。同样,使用SQL语句将这些信息插入到库存表中的相应字段中。 最后,给用户显示一个成功的提示,表明入库信息已经成功添加到入库表和库存表中。 需要注意的是,为了实现上述功能,还需要确保数据库中已经创建了相应的入库表和库存表,并且正确建立了数据库连接。 以上就是通过JSP实现入库功能的简要步骤。通过这个功能,用户可以方便地将商品入库信息添加到入库表和库存表中,方便后续的库存管理工作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值