实现数据的新增
Dao层 接口
package com.ishopn.dao;
import java.util.List;
import com.ishopn.model.Commodity;
//接口 定义增删查的方法
public interface CommodityDao {
List<Commodity> getCommodityList(); // 查询方法 获取commodity的集合
int istCommodity(Commodity c);// 插入新的commodity数据
int delCommodityById(String c_id);//删除commodity的数据
}
Dao层 实现类
//CommodityDao接口的实现类
package com.ishopn.dao.impl;
import java.sql.Connection;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import com.ishopn.dao.CommodityDao;
import com.ishopn.model.Commodity;
import com.ishopn.util.DBHelper;
public class CommodityDaoimpl implements CommodityDao {
@Override //重写查询方法
public List<Commodity> getCommodityList() {
//定义一个List集合来保存数据库中的commodity数据
List<Commodity> commoditys = new ArrayList<Commodity>();
try {
//获取数据库连接
Connection conn = DBHelper.getConnection();
String sql = "select * from commodity";
ResultSet rs = DBHelper.execteQuery(conn, sql, null);
while(rs.next()) {
//实例化一个commodity对象,将数据库中的数据以对象保存
Commodity c = new Commodity();
c.setC_id(rs.getString(1)) ;
c.setC_name(rs.getString(2));
c.setC_madein(rs.getString(3));
c.setC_type(rs.getString(4));
c.setC_inprice(rs.getInt(5));
c.setC_outprice(rs.getInt(6));
c.setC_num(rs.getInt(7));
c.setCt(new CommoditytypeDaoimpl().getCommoditytypeById(rs.getString("c_type")));
commoditys.add(c);
}
//关闭数据库连接
DBHelper.closeConnection(conn);
}catch(Exception e) {
e.printStackTrace();
}
//将得到的数据集合返回
return commoditys;
}
@Override//重写的新增数据方法 需要新增的数据的那个对象
//该对象中保存了commodity的所有数据,用于插入到数据库
public int istCommodity(Commodity c) {
//初始化 数据库中的受影响行数
int line = 0;
try {
//获取数据库连接
Connection conn = DBHelper.getConnection();
//新增的sql语句
String sql = "insert into commodity (c_id,c_name,c_madein,c_type,c_inprice,c_outprice,c_num) values(?,?,?,?,?,?,?)";
List param = new ArrayList();
param.add(c.getC_id());
param.add(c.getC_name());
param.add(c.getC_madein());
param.add(c.getC_type());
param.add(c.getC_inprice());
param.add(c.getC_outprice());
param.add(c.getC_num());
line = DBHelper.executeUpdate(conn, sql, param);
//关闭数据库连接
DBHelper.closeConnection(conn);
}catch(Exception e) {
e.printStackTrace();
}
//将数据库中的受影响行数返回
return line;
}
@Override//重写的删除数据方法 需要一个呗删除数据的id
public int delCommodityById(String c_id) {
int line = 0;
try {
//获取数据库连接
Connection conn = DBHelper.getConnection();
//删除的sql语句
String sql = "delete from commodity where c_id=?";
List param = new ArrayList();
param.add(c_id);
line = DBHelper.executeUpdate(conn, sql, param);
//关闭数据库连接
DBHelper.closeConnection(conn);
}catch(Exception e){
e.printStackTrace();
}
//将执行sql语句后的受影响行数返回
return line;
}
}
Controller层
package com.ishopn.controller;
import java.util.List;
import com.ishopn.dao.CommodityDao;
import com.ishopn.dao.impl.CommodityDaoimpl;
import com.ishopn.model.Commodity;
//处理业务逻辑
public class CommodityController {
private CommodityDao commodityDao = null;
//在构造方法中将Dao层对象实例化 增加代码复用
public CommodityController() {
commodityDao = new CommodityDaoimpl();
}
//查询方法 使用实例化的Dao层对象去调用方法,获得返回 数据的List集合
public List<Commodity> getCommodityList() {
return commodityDao.getCommodityList();
}
//新增方法 使用实例化的Dao层对象调用新增数据的方法 获得返回的受影响行数
//由于该方法需要一个Commodity的对象,所以需要new一个,
//然后使用前端获取到的用户输入的字段 实例化Commodity对象
//返回受影响行数
public int istCommodity(String c_name,String c_madein,String c_type,String c_inprice,String c_outprice,String c_num) {
Commodity c = new Commodity(System.currentTimeMillis()+"",c_name,c_madein,c_type,new Integer(c_inprice),new Integer(c_outprice),new Integer(c_num));
return commodityDao.istCommodity(c);
}
//删除方法 使用实例化的Dao层对象调用delCommodityById方法
//该方法的参数为前端获得的要删除的数据的id
public int delCommodityById(String c_id) {
return commodityDao.delCommodityById(c_id);
}
}
Service层 新增
package com.ishopn.servlet;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.ishopn.controller.CommodityController;
import com.ishopn.controller.CommoditytypeController;
import com.ishopn.model.Commodity;
import com.ishopn.model.Commoditytype;
//创建一个普通类去继承HttpServlet类 变成Servlet
public class CommodityServlet extends HttpServlet {
//重写HttpSerlet的两个方法 可获得request和respon对象
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置编码格式
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
//通过前端获得数据的信息
String c_name = req.getParameter("c_name");
String c_madein = req.getParameter("c_madein");
String c_type = req.getParameter("c_type");
String c_inprice = req.getParameter("c_inprice");
String c_outprice = req.getParameter("c_outprice");
String c_num = req.getParameter("c_num");
//调用Controller层的新增方法,将从起那段获得的参数传入
int line = new CommodityController().istCommodity(c_name, c_madein, c_type, c_inprice, c_outprice, c_num);
//判断受影响行数 大于0 说明数据库中数据新增成功
if(line>0) {
HttpSession session = req.getSession();
//该List用于显示所有商品的信息
List<Commodity> cList = new CommodityController().getCommodityList();
session.setAttribute("cList", cList);
List<Commoditytype> ctList = new CommoditytypeController().getCommodityList();
session.setAttribute("ctList", ctList);
//新增之后 重新跳转到当前页面 实现刷新功能
resp.sendRedirect("/web06/welcome.jsp");
}else {
//数据插入失败
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
}
Service层 删除
package com.ishopn.servlet;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.ishopn.controller.CommodityController;
import com.ishopn.controller.CommoditytypeController;
import com.ishopn.model.Commodity;
import com.ishopn.model.Commoditytype;
//创建删除类 继承HttpServlet 变为Servlet
public class delCommodityByIdServlet extends HttpServlet {
//重写HttpServlet的两个方法
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置编码格式
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
//从前端获得要删除的商品的id
String c_id = req.getParameter("c_id");
//实例化Controller层的对象
CommodityController c = new CommodityController();
//调用删除方法
int line = c.delCommodityById(c_id);
HttpSession session = req.getSession();
//判断数据库中的受影响行数 大于0则表示删除成功
if(line>0) {
//获取商品数据的List集合
List<Commodity> cList = new CommodityController().getCommodityList();
session.setAttribute("cList", cList);
List<Commoditytype> ctList = new CommoditytypeController().getCommodityList();
session.setAttribute("ctList", ctList);
//重新跳转到当前页面 达到刷新的效果
resp.sendRedirect("/web06/welcome.jsp");
}else {
System.out.println("删除失败!");
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
}