⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 orderdao.java

📁 一个基于java工厂模式的 的实现
💻 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 + -