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页面就不在这贴了,相信大家都会,都明白。
大家有什么可以给我留言。
分享到:
相关推荐
用Struts2+Spring+Hibernate三大框架完成的级联操作,包括省市县和年月日
结果表明,快速旋转的Kerr黑洞的特征在于无因次比τgap/τ... 这种关系意味着快速旋转的黑洞产生的霍金级联具有几乎连续的特征。 我们的结果纠正了最近在文献中出现的有关霍金黑洞蒸发过程本质的一些不准确的说法。
haarcascade_eye.xml: 用于眼睛检测的级联分类器模型 haarcascade_eye_tree_eyeglasses.xml: 用于眼镜和眼睛联合检测的级联分类器模型 haarcascade_fullbody.xml: 用于全身人体检测的级联分类器模型 haarcascade_...
mysql级联更新和级联删除,区分有级联和没级联操作的区别之处
如果,现在有两张表A(id,xx.xx...),C(id,Cid,xx,xx...),预实现C中的id与A 中id级联删除、级联更新/数据同步,可有两种实现方式: 一. 利用sql server自带的级联删除、级联更新功能,即其外键约束途径 alter table ...
级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单
小猫:一种静态类型的级联系统编程语言
struts2 hibernate 框架 三级城市级联
联系通过写存储过程进行级联删除,在实际开发中总结的
hibernate many-to-many级联保存,级联更新,级联删除
很好的级联菜单实例 包括二级级联菜单和三级级联菜单
级联的操作有级联更新,级联删除。 二、级联相应的操作 在启用一个级联更新选项后,就可在存在相匹配的外键值的前提下更改一个主键值。系统会相应地更新所有匹配的外键值。如果在表A中将姓名为王五的记录改为李四,...
qt下的sqlite3实现级联删除,在vs2010 + qt5.40 + win7下编译通过
级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单...
SQL server创建触发器实现级联删除
全国城市三级级联全国城市三级级联
jQuery 城市三级级联 ,很不错哦!
菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联
MSserver自关联表的级联删除,使用触发器对自关联树形结构的表进行级联删除,文有几点教训,有编写脚本的初衷。
省市县三级级联菜单省市县三级级联菜单省市县三级级联菜单