B2C电子商务网站:三大框架整合开发的级联删除

本文介绍了一个B2C电子商务网站中实现级联删除功能的方法。通过在删除订单的同时,自动删除该订单下的所有订单详情,确保数据的一致性和完整性。

B2C电子商务网站:三大框架整合开发的级联删除

       最近在做B2C电子商务网站,所以一直很忙,都没有什么时间写我的技术ITEYE博客,今天已经把进度提上去了,后台做的差不多了。今天我想给大家分享我的项目中的级联删除的操作。
       比如:对于商品表,当删除某个商品订单的时候,应该删除该订单下所有的订单详情。
       最后运行的结果是:当你点击订单的删除时,它会把所有的订单明细全部删除。这样就达到了级联删除的操作。
       以下是详细代码,大家可以参考。

 

cn.z_xiaofei168.domain包

package cn.z_xiaofei168.domain;

import java.util.Date;
import java.util.HashSet;
import java.util.Set;

public class Orders implements java.io.Serializable {

	/**
	 * @author z_xiaofei168
	 */
	private static final long serialVersionUID = 1L;
	private Integer id;
	private Payments payments;
	private Employees employees;
	private Customers customers;
	private String number;
	private Date rdate;
	private Double sum;
	private String sendmode;
	private String status;
	private Set<Orderdetails> orderdetailses = new HashSet<Orderdetails>(0);
	
	//以下省略所有的set和get方法
	
}

 

 
   Orders.hbm.xml

 

 

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                                   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping default-lazy="false"
	package="cn.z_xiaofei168.domain">
	<class name="Orders" table="orders">
		<id name="id" type="java.lang.Integer">
			<column name="id" />
			<generator class="identity" />
		</id>
		<many-to-one class="Payments" fetch="select" lazy="false"
			name="payments">
			<column name="payment_id" not-null="true" />
		</many-to-one>
		<many-to-one class="Employees" fetch="select" lazy="false"
			name="employees">
			<column name="employees_id" not-null="true" />
		</many-to-one>
		<many-to-one class="Customers" fetch="select" lazy="false"
			name="customers">
			<column name="customers_id" not-null="true" />
		</many-to-one>
		<property generated="never" lazy="false" name="number"
			type="java.lang.String">
			<column length="20" name="number" not-null="true" />
		</property>
		<property generated="never" lazy="false" name="rdate" type="date">
			<column length="19" name="rdate" not-null="true" />
		</property>
		<property generated="never" lazy="false" name="sum"
			type="java.lang.Double">
			<column name="sum" not-null="true" precision="22" scale="0" />
		</property>
		<property generated="never" lazy="false" name="sendmode"
			type="java.lang.String">
			<column length="50" name="sendmode" not-null="true" />
		</property>
		<property generated="never" lazy="false" name="status"
			type="java.lang.String">
			<column length="10" name="status" not-null="true" />
		</property>
		<set inverse="true" lazy="false" name="orderdetailses" sort="unsorted">
			<key>
				<column name="orders_id" not-null="true" />
			</key>
			<one-to-many class="Orderdetails" />
		</set>
	</class>
</hibernate-mapping>

 

  cn.z_xiaofei168.action包

 

package cn.z_xiaofei168.action;

import java.util.List;
import cn.z_xiaofei168.domain.Orders;
import cn.z_xiaofei168.service.OrdersServiceImpl;

import com.opensymphony.xwork2.ActionSupport;

public class OrdersAction extends ActionSupport {

	/**
	 * @author z_xiaofei168
	 */
	private static final long serialVersionUID = 1L;

	/** 业务层对象 */
	private OrdersServiceImpl ordersServiceImpl;
	private Orders entity;
	private List<Orders> entities;
	
	//以下省略所以的set和get方法
	
	/** 级联删除的操作 */
	public String delete() throws Exception {
		ordersServiceImpl.delete(entity.getId());
		return "delete";
	}
}
 

 

   cn.z_xiaofei168.dao包

 

package cn.z_xiaofei168.dao;

import java.util.List;
import java.util.Set;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import cn.z_xiaofei168.domain.Orderdetails;
import cn.z_xiaofei168.domain.Orders;

public class OrdersDaoImpl extends HibernateDaoSupport implements OrdersDao {

	public void delete(Orders entity) throws Exception {
		
		/** 删除订单之前,应该把订单对应的订单明细删除 */
		Set<Orderdetails> orderdetails = entity.getOrderdetailses();
		if(orderdetails.size()==0){
			System.out.println("orderdetails对象为空");
		}else{
			for(Orderdetails ord: orderdetails){
				this.getHibernateTemplate().delete(ord);
			}
		}
		this.getHibernateTemplate().delete(entity);
	}

	public void delete(Integer id) throws Exception {
		this.delete(this.findById(id));
	}
	
	public Orders findById(Integer id) throws Exception {
		return (Orders) this.getHibernateTemplate().get(Orders.class, id);
	}
}

 

  cn.z_xiaofei168.service包

 

 

package cn.z_xiaofei168.service;

import java.util.List;

import cn.z_xiaofei168.dao.OrdersDaoImpl;
import cn.z_xiaofei168.domain.Orders;

public class OrdersServiceImpl implements OrdersService {

	private OrdersDaoImpl ordersDaoImpl;

	//set方法注入
	public void setOrdersDaoImpl(OrdersDaoImpl ordersDaoImpl) {
		this.ordersDaoImpl = ordersDaoImpl;
	}
	
	public void delete(Integer id) throws Exception {
		ordersDaoImpl.delete(id);
	}
}

 

       具体的JSP页面就不在这贴了,相信大家都会,都明白。

       大家有什么可以给我留言。

 

【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)内容概要:本文介绍了一种基于神经网络的数据驱动迭代学习控制(ILC)算法,用于解决具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车路径跟踪问题,并提供了完整的Matlab代码实现。该方法无需精确系统模型,通过数据驱动方式结合神经网络逼近系统动态,利用迭代学习机制不断提升控制性能,从而实现高精度的路径跟踪控制。文档还列举了大量相关科研方向和技术应用案例,涵盖智能优化算法、机器学习、路径规划、电力系统等多个领域,展示了该技术在科研仿真中的广泛应用前景。; 适合人群:具备一定自动控制理论基础和Matlab编程能力的研究生、科研人员及从事无人车控制、智能算法开发的工程技术人员。; 使用场景及目标:①应用于无人车在重复任务下的高精度路径跟踪控制;②为缺乏精确数学模型的非线性系统提供有效的控制策略设计思路;③作为科研复现与算法验证的学习资源,推动数据驱动控制方法的研究与应用。; 阅读建议:建议读者结合Matlab代码深入理解算法实现细节,重点关注神经网络与ILC的结合机制,并尝试在不同仿真环境中进行参数调优与性能对比,以掌握数据驱动控制的核心思想与工程应用技巧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值