版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40788630/article/details/85555901
首先查看后台 订单管理,其中订单管理就只有删除订单这一个功能
所以只需要实现这一个删除功能就行了
实现的顺序是:持久层——dao层——service层——controller层——jsp层
一、实现持久层
在com.po包中创建订单的相关类Order
package com.po;
public class Order {
private Integer id;
private Integer busertable_id;
private Double amount;
private Integer status;
private String orderdate;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getBusertable_id() {
return busertable_id;
}
public void setBusertable_id(Integer busertable_id) {
this.busertable_id = busertable_id;
}
public Double getAmount() {
return amount;
}
public void setAmount(Double amount) {
this.amount = amount;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getOrderdate() {
return orderdate;
}
public void setOrderdate(String orderdate) {
this.orderdate = orderdate;
}
}
二、dao层实现
dao层由AdminOrderDao接口以及同名的数据库映射文件组成,
AdminOrderDao接口详细代码如下所示:
package com.dao;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Repository("adminOrderDao")
@Mapper
public interface AdminOrderDao {
public List<Map<String, Object>> orderInfo();
public int deleteOrderDetail(Integer id);
public int deleteOrderBase(Integer id);
}
其同名映射文件详细代码如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dao.AdminOrderDao">
<select id="orderInfo" resultType="map">
select ot.id, ot.amount, ot.status, orderdate, bt.bemail, ot.busertable_id
from ORDERBASETABLE ot, BUSERTABLE bt where ot.busertable_id=bt.id
</select>
<delete id="deleteOrderDetail" parameterType="Integer">
delete from orderdetail where orderbasetable_id=#{id}
</delete>
<delete id="deleteOrderBase" parameterType="Integer">
delete from orderbasetable where id=#{id}
</delete>
</mapper>
三、实现service层
此层是由AdminOrderService接口及其实现类组成的
其接口详细代码如下所示:
package com.service.admin;
import org.springframework.ui.Model;
public interface AdminOrderService {
public String orderInfo(Model model);
public String deleteorderManager(Integer id);
}
其接口实现类如下所示:
package com.service.admin;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.Model;
import com.dao.AdminOrderDao;
@Service("adminOrderService")
@Transactional
public class AdminOrderServiceImpl implements AdminOrderService {
@Autowired
private AdminOrderDao adminOrderDao;
@Override
public String orderInfo(Model model) {
List<Map<String, Object>> list = adminOrderDao.orderInfo();
model.addAttribute("orderList", list);
return "admin/orderManager";
}
@Override
public String deleteorderManager(Integer id) {
//先删除订单明细
adminOrderDao.deleteOrderDetail(id);
//再删除订单明细
adminOrderDao.deleteOrderBase(id);
return "forward:/adminOrder/orderInfo";
}
}
四、实现Controller层
在com.controller.admin包中创建AdminOrderController,其详细代码如下所示:
package com.controller.admin;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.service.admin.AdminOrderService;
@Controller
@RequestMapping("/adminOrder")
public class AdminOrderController extends BaseController{
@Autowired
private AdminOrderService adminOrderService;
@RequestMapping("/orderInfo")
public String orderInfo(Model model) {
return adminOrderService.orderInfo(model);
}
@RequestMapping("/deleteorderManager")
public String deleteorderManager(Integer id) {
return adminOrderService.deleteorderManager(id);
}
}
五、实现jsp层
创建ordermanager.jsp文件,其源代码如下所示:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<base href="<%=basePath%>">
<title>订单管理</title>
<link href="css/admin/common.css" type="text/css" rel="stylesheet">
<style type="text/css">
table{
text-align: center;
border-collapse: collapse
}
.bgcolor{
background-color: #F08080;
}
</style>
<script type="text/javascript">
function changeColor(obj){
obj.className="bgcolor";
}
function changeColor1(obj){
obj.className="";
}
function checkDel(id){
if(window.confirm("是否删除该订单?")){
window.location.href="/ch20/adminOrder/deleteorderManager?id="+id;
}
}
</script>
</head>
<body>
<br>
<table border="1" bordercolor="PaleGreen">
<tr>
<th width="150px">订单编号</th>
<th width="150px">用户E-mail</th>
<th width="100px">订单金额</th>
<th width="100px">订单状态</th>
<th width="150px">订单日期</th>
<th width="100px">操作</th>
</tr>
<c:forEach var="n" items="${orderList}">
<tr onmousemove="changeColor(this)" onmouseout="changeColor1(this)">
<td>${n.id}</td>
<td>${n.bemail}</td>
<td>${n.amount}</td>
<td><c:if test="${n.status == 0}" >未付款</c:if><c:if test="${n.status == 1}" >已付款</c:if></td>
<td>${n.orderdate}</td>
<td>
<c:if test="${n.status == 0}" >
<a href="javaScript:checkDel('${n.id}')">删除</a>
</c:if>
</td>
</tr>
</c:forEach>
</table>
</body>
</html>
至此,删除订单的功能就完成了,
此时在浏览器登录后台,点击删除订单按钮显示画面如下图所示:
由于数据库中还没有订单,所以并没有看到订单项,