📄 orderdao.java
字号:
/*
* OrderDAO.java
*
* Created on 2007年4月24日, 上午9:44
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package com.ebuy.dataaccess;
import com.ebuy.common.dao.IOrderDAO;
import com.ebuy.entities.OrderEntity;
import com.ebuy.entities.OrderItem;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
/**
*
* @author Administrator
*/
public class OrderDAO extends DAOAdapter implements IOrderDAO
{
/** Creates a new instance of OrderDAO */
public OrderDAO()
{
}
//把一份订单提交到数据库,实际上是对2张表的操作,要使用事务
public boolean addEntity(Object entity)
{
OrderEntity order=(OrderEntity)entity;
//Orders表插入一条记录
String sp="ORDERS_INSERT(?,?,?,?,?,?)";
try
{
java.sql.CallableStatement csmt=this.server.getCallableStatement(sp);
csmt.setInt(1,order.getCustomerid());
csmt.setString(2,order.getReceivename());
csmt.setString(3,order.getShipaddress());
csmt.setDouble(4,order.getTotalmoney());
csmt.setInt(5,order.getState());
csmt.registerOutParameter(6,java.sql.Types.INTEGER);
//开始事务
this.server.beginTrans();
csmt.execute();
int orderid=csmt.getInt(6);
order.setOrderid(orderid);
//OrderDetails表插入若干条记录
String sql="insert into OrderDetails values (?,?,?,?)";
java.sql.PreparedStatement pstmt=this.server.getPreparedStatement(sql);
Iterator<OrderItem> iter=order.getItems().iterator();
OrderItem item=null;
while(iter.hasNext())
{
item=iter.next();
pstmt.setInt(1,orderid);
pstmt.setInt(2,item.getProductid());
pstmt.setInt(3,item.getQuantity());
pstmt.setDouble(4,item.getRealprice());
pstmt.addBatch();
}
pstmt.executeBatch();
//提交事务
this.server.commitTrans();
return true;
}
catch (SQLException ex)
{
//回滚事务
this.server.rollbackTrans();
ExceptionManager.handlerException(ex);
return false;
}
finally
{
this.server.closeConnection();
}
}
public Object findByPK(Object... pk)
{
String s1="select * from View_Orders where OrderID = "+pk[0];
String s2="select * from View_OrderDetails where OrderID = "+pk[0];
OrderEntity order=new OrderEntity();
try
{
ResultSet rs1=this.server.execQuery(s1);
if(rs1.next())
{
order.setOrderid(rs1.getInt(1));
order.setCustomerid(rs1.getInt(2));
order.setOrderdate(rs1.getDate(3));
order.setReceivename(rs1.getString(4));
order.setShipaddress(rs1.getString(5));
order.setTotalmoney(rs1.getDouble(6));
order.setState(rs1.getInt(7));
}
ResultSet rs2=this.server.execQuery(s2);
OrderItem item=null;
while(rs2.next())
{
item=new OrderItem();
item.setOrderid(rs2.getInt(1));
item.setProductid(rs2.getInt(2));
item.setProductname(rs2.getString(3));
item.setRealprice(rs2.getDouble(4));
item.setQuantity(rs2.getInt(5));
order.addOrderItem(item);
}
}
catch (SQLException ex)
{
ExceptionManager.handlerException(ex);
}
finally
{
this.server.closeConnection();
return order;
}
}
//测试
public static void main(String args[])
{
OrderDAO dao=new OrderDAO();
Object obj=dao.findByPK(10055);
OrderEntity order=(OrderEntity)obj;
int id=order.getOrderid();
}
public boolean updateStateByOrderID(int orderid, int state)
{
String sp="ORDERS_UPDTESTATE(?,?)";
try
{
java.sql.CallableStatement csmt=this.server.getCallableStatement(sp);
csmt.setInt(1,orderid);
csmt.setInt(2,state);
csmt.execute();
return true;
}
catch (SQLException ex)
{
ExceptionManager.handlerException(ex);
return false;
}
finally
{
this.server.closeConnection();
}
}
public List findOrdersByCustomerID(int customerid)
{
String sql="select * from view_orders where customerid = "+customerid;
ArrayList list=new ArrayList();
OrderEntity order=null;
try
{
java.sql.ResultSet rs=this.server.execQuery(sql);
while(rs.next())
{
order=new OrderEntity();
order.setOrderid(rs.getInt(1));
order.setCustomerid(rs.getInt(2));
order.setOrderdate(rs.getDate(3));
order.setReceivename(rs.getString(4));
order.setShipaddress(rs.getString(5));
order.setTotalmoney(rs.getDouble(6));
order.setState(rs.getInt(7));
list.add(order);
}
}
catch (SQLException ex)
{
ExceptionManager.handlerException(ex);
}
finally
{
this.server.closeConnection();
return list;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -