亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? businessservice.java

?? Hibernate 測試
?? JAVA
字號:
package mypack;

import java.util.Set;
import java.util.Iterator;
import java.util.List;
import java.util.HashSet;
import java.util.HashMap;
import java.util.ArrayList;
import java.sql.*;
import com.mysql.jdbc.Driver;

public class BusinessService{
  private String dbUrl ="jdbc:mysql://localhost:3306/SAMPLEDB";
  private String dbUser="root";
  private String dbPwd="1234";

  public BusinessService() throws Exception{
     //加載MySQL數據庫驅動程序
     Class.forName("com.mysql.jdbc.Driver");
     DriverManager.registerDriver(new com.mysql.jdbc.Driver());
  }

  public Connection getConnection()throws Exception{
      //獲得一個數據庫連接
      return java.sql.DriverManager.getConnection(dbUrl,dbUser,dbPwd);
  }

  /**
   * 持久化參數指定的Customer對象,并且級聯持久化與它關聯的Order對象。
   * 如果Customer對象的name屬性為null,或者Order對象的orderNumber屬性為null,
   * 會拋出BusinessException
   */
  public void saveCustomer(Customer customer) throws Exception {
    Connection con=null;
    PreparedStatement stmt=null;
    try {
      con=getConnection(); //獲得數據庫連接

      //開始一個數據庫事務
      con.setAutoCommit(false);

      //以下是業務邏輯代碼,檢查客戶姓名是否為空
      if(customer.getName()==null)
        throw new BusinessException("客戶姓名不允許為空");

      //以下是數據訪問代碼,持久化Customer對象

      //為新的CUSTOMERS記錄分配惟一的ID
      long customerId=getNextId(con,"CUSTOMERS");
      //把Customer對象映射為面向關系的SQL語句
      stmt=con.prepareStatement("insert into CUSTOMERS(ID,NAME,AGE) values(?,?,?)");
      stmt.setLong(1,customerId);
      stmt.setString(2,customer.getName());
      stmt.setInt(3,customer.getAge());
      stmt.execute();

      Iterator iterator =customer.getOrders().iterator();
      while (iterator.hasNext() ) {
        //以下是業務邏輯代碼,檢查訂單編號是否為空
        Order order=(Order)iterator.next();
        if(order.getOrderNumber()==null)
          throw new BusinessException("訂單編號不允許為空");

        //以下是數據訪問代碼,級聯持久化Order對象

        //為新的ORDERS記錄分配惟一的ID
        long orderId=getNextId(con,"ORDERS");
        //把Order對象映射為面向關系的SQL語句
        stmt=con.prepareStatement("insert into ORDERS(ID,ORDER_NUMBER,PRICE,CUSTOMER_ID)values(?,?,?,?)");
        stmt.setLong(1,orderId);
        stmt.setString(2,order.getOrderNumber());
        stmt.setDouble(3,order.getPrice());
        stmt.setLong(4,customerId);
        stmt.execute();
      }

      //提交數據庫事務
      con.commit();

    }catch(Exception e){
      e.printStackTrace();
      try{//如果出現異常,撤銷整個事務
        con.rollback();
      }catch(SQLException sqlex){
        sqlex.printStackTrace(System.out);
      }
      throw e;
    }finally{
      try{
         stmt.close();
         con.close();
       }catch(Exception e){
         e.printStackTrace();
       }
    }
  }

  /**
   * 更新參數指定的Customer對象
   */
  public void updateCustomer(Customer customer) throws Exception {
    Connection con=null;
    PreparedStatement stmt=null;
    try {
      con=getConnection(); //獲得數據庫連接

      //開始一個數據庫事務
      con.setAutoCommit(false);

      //以下是數據訪問代碼,更新Customer對象

      //把Customer對象映射為面向關系的SQL語句
      stmt=con.prepareStatement("update CUSTOMERS set NAME=?,AGE=? where ID=?");
      stmt.setString(1,customer.getName());
      stmt.setInt(2,customer.getAge());
      stmt.setLong(3,customer.getId().longValue());
      stmt.execute();

      //提交數據庫事務
      con.commit();

    }catch(Exception e){
      try{//如果出現異常,撤銷整個事務
        con.rollback();
      }catch(SQLException sqlex){
        sqlex.printStackTrace(System.out);
      }
      throw e;
    }finally{
      stmt.close();
      con.close();
    }
  }
  /**
   * 刪除參數指定的Customer對象,并且級聯刪除與它關聯的Order對象。
   */
  public void deleteCustomer(Customer customer) throws Exception {
    Connection con=null;
    PreparedStatement stmt=null;
    try {
      con=getConnection(); //獲得數據庫連接

      //開始一個數據庫事務
      con.setAutoCommit(false);

      //先刪除和Customer對象關聯的Order對象
      stmt=con.prepareStatement("delete from ORDERS where "
                            +"CUSTOMER_ID=?" );
      stmt.setLong(1,customer.getId().longValue());
      stmt.executeUpdate();

      //刪除Customer對象
      stmt=con.prepareStatement("delete from CUSTOMERS where "
                         +"ID=?" );
      stmt.setLong(1,customer.getId().longValue());
      stmt.executeUpdate();

      //提交數據庫事務
      con.commit();

    }catch(Exception e){
      try{//如果出現異常,撤銷整個事務
        con.rollback();
      }catch(SQLException sqlex){
        sqlex.printStackTrace(System.out);
      }
      throw e;
    }finally{
      try{
         stmt.close();
         con.close();
       }catch(Exception e){
         e.printStackTrace();
       }
    }
  }

  /*
   * 根據OID加載一個Customer對象
   */
  public Customer loadCustomer (long customerId) throws Exception {
    Connection con=null;
    PreparedStatement stmt=null;
    ResultSet rs=null;
    try {
      con=getConnection(); //獲得數據庫連接

      //以下是數據訪問代碼,加載Customer對象
      stmt=con.prepareStatement("select ID,NAME,AGE from CUSTOMERS where ID=?");
      stmt.setLong(1,customerId);
      rs=stmt.executeQuery();

      if(rs.next()) {
        Customer customer=new Customer();
        customer.setId(new Long(rs.getLong(1)));
        customer.setName(rs.getString(2));
        customer.setAge(rs.getInt(3));
        return customer;
      }else{
        throw new BusinessException("OID為"+customerId+"的Customer對象不存在");
      }

    }finally{
      try{
         rs.close();
         stmt.close();
         con.close();
       }catch(Exception e){
         e.printStackTrace();
       }
    }
  }

  /*
   * 按照姓名查詢滿足條件的Customer對象,同時加載與它關聯的Order對象
   */
  public List findCustomerByName(String name) throws Exception{
    HashMap map=new HashMap();
    List result=new ArrayList();

    Connection con=null;
    PreparedStatement stmt=null;
    ResultSet rs=null;
    try{
      con=getConnection(); //獲得數據庫連接

      String sqlString=" select c.ID CUSTOMER_ID,c.NAME,c.AGE,o.ID ORDER_ID, "
      +"o.ORDER_NUMBER,o.PRICE "
      +"from CUSTOMERS c left outer join ORDERS o "
      +"on c.ID =o.CUSTOMER_ID where c.NAME=?";
      stmt = con.prepareStatement(sqlString);
      stmt.setString(1,name); //綁定參數
      rs=stmt.executeQuery();
      while (rs.next())
      {
        //編歷JDBC ResultSet結果集
        Long customerId =new Long( rs.getLong(1));
        String customerName= rs.getString(2);
        int customerAge= rs.getInt(3);
        Long orderId =new Long( rs.getLong(4));
        String orderNumber= rs.getString(5);
        double price=rs.getDouble(6);

        //映射Customer對象
        Customer customer=null;
        if(map.containsKey(customerId))
          //如果在map中已經存在OID匹配的Customer對象,就獲得此對象的引用,這樣
          //就避免創建重復的Customer對象。
          customer=(Customer)map.get(customerId);
        else{
          //如果在map中不存在OID匹配的Customer對象,就創建一個Customer對象,
          //然后把它保存到map中。
          customer=new Customer();
          customer.setId(customerId);
          customer.setName(customerName);
          customer.setAge(customerAge);
          map.put(customerId,customer);
        }

        //映射Order對象
        Order order=new Order();
        order.setId(orderId);
        order.setOrderNumber(orderNumber);
        order.setPrice(price);

        //建立Customer對象與Order對象的關聯關系
        customer.getOrders().add(order);
        order.setCustomer(customer);
      }
      //把map中所有的Customer對象加入到result集合中
      Iterator iter =map.values().iterator();
      while ( iter.hasNext() ) {
          result.add(iter.next());
      }
      return result;
    }finally{
       try{
         rs.close();
         stmt.close();
         con.close();
       }catch(Exception e){
         e.printStackTrace();
       }
    }
  }

  /**
   * 生成一個新的主鍵值,取值為表的當前最大主鍵值+1,如果表不包含記錄,就返回1
   */
  private long getNextId(Connection con,String tableName) throws Exception {
    long nextId=0;
    PreparedStatement stmt = null;
    ResultSet rs = null;
    try {
      stmt = con.prepareStatement("select max(ID) from "+tableName);
      rs = stmt.executeQuery();
      if ( rs.next() ) {
        nextId = rs.getLong(1) + 1;
        if ( rs.wasNull() ) nextId = 1;
      }
      else {
        nextId = 1;
      }
      return nextId;
    }finally {
      try{
         rs.close();
         stmt.close();
      }catch(Exception e){
         e.printStackTrace();
      }
    }
  }

  public void test()throws Exception{
    Customer customer=new Customer("Tom",21,new HashSet());
    Order order1=new Order("Tom_Order001",100,customer);
    Order order2=new Order("Tom_Order002",200,customer);
    customer.getOrders().add(order1);
    customer.getOrders().add(order2);

    saveCustomer(customer);

    customer=loadCustomer(1);
    customer.setAge(22);
    updateCustomer(customer);

    List result=findCustomerByName("Tom");
    Iterator iterator=result.iterator();
    while(iterator.hasNext()){
      customer=(Customer)iterator.next();
      System.out.println("Customer:"+customer.getId()+" "+customer.getName()+" "+customer.getAge());
      Iterator orderIterator=customer.getOrders().iterator();
      while(orderIterator.hasNext()){
        Order order=(Order)orderIterator.next();
        System.out.println("Order:"+order.getId()+" "+order.getOrderNumber()+" "+order.getPrice());
      }
    }
    deleteCustomer(customer);
  }

  public static void main(String args[])throws Exception{
    new BusinessService().test();
  }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人综合婷婷国产精品久久蜜臀| 精品久久久久av影院| 欧美日韩成人高清| 国产亚洲精品福利| 日本伊人色综合网| 欧美影院午夜播放| 136国产福利精品导航| 久久99九九99精品| 欧美在线观看你懂的| 国产农村妇女精品| 国产美女av一区二区三区| 欧美日韩免费视频| 亚洲精品第一国产综合野| 高清不卡一二三区| 久久久99久久| 国产精品一区二区在线播放| 欧美一区二区三区影视| 亚洲国产欧美在线| 欧美日韩在线亚洲一区蜜芽| 亚洲精品国产a| 在线视频综合导航| 一区二区三区色| 一本色道久久综合亚洲精品按摩| 欧美国产精品一区二区| 国产精品1区2区3区| 欧美tickle裸体挠脚心vk| 免费在线看一区| 欧美大片在线观看一区二区| 欧美久久高跟鞋激| 欧美日韩国产一区| 午夜视频在线观看一区| 欧美日韩一区成人| 五月天视频一区| 欧美一级高清片| 亚洲一二三四区| 午夜激情综合网| 国产高清久久久| 国产精品萝li| 91社区在线播放| 亚洲综合无码一区二区| 欧美麻豆精品久久久久久| 午夜婷婷国产麻豆精品| 在线电影国产精品| 美美哒免费高清在线观看视频一区二区| 制服丝袜一区二区三区| 蜜臀久久久久久久| 久久亚洲一区二区三区四区| 国产精品69毛片高清亚洲| 国产精品乱码妇女bbbb| 色偷偷88欧美精品久久久| 亚洲国产精品久久一线不卡| 69堂国产成人免费视频| 国产一区二区三区免费观看| 中文字幕av资源一区| 91极品美女在线| 人禽交欧美网站| 国产精品美女www爽爽爽| 91国产成人在线| 久久精品国产网站| 中文字幕国产一区| 欧美日韩在线播放一区| 国产一区二区三区久久悠悠色av| 亚洲欧美综合网| 欧美一区二区三区白人| 成人福利视频网站| 午夜久久久久久电影| 国产丝袜在线精品| 欧美日韩成人在线一区| 国产精品一区二区你懂的| 一区二区三区在线免费视频| 精品免费日韩av| 欧美亚洲日本国产| 国产精品一级在线| 香蕉加勒比综合久久| 国产人久久人人人人爽| 欧美一区二视频| 色综合久久99| 国产精品99久久久久久久女警| 亚洲天堂av一区| 26uuu色噜噜精品一区二区| 欧美亚洲动漫另类| 风间由美一区二区av101| 轻轻草成人在线| 亚洲最色的网站| 中文字幕精品在线不卡| 精品久久久久久无| 欧美精品九九99久久| 色偷偷一区二区三区| 国产传媒日韩欧美成人| 日本午夜精品视频在线观看| 一区二区三区高清不卡| 国产婷婷精品av在线| 欧美电影免费观看高清完整版| 欧美三级视频在线| 色综合欧美在线| 91在线丨porny丨国产| 国产不卡视频一区二区三区| 美女一区二区三区在线观看| 亚洲成人精品影院| 亚洲一区二区三区自拍| 樱花草国产18久久久久| |精品福利一区二区三区| 国产欧美日韩麻豆91| 久久久综合九色合综国产精品| 宅男在线国产精品| 制服丝袜av成人在线看| 欧美久久久久久蜜桃| 欧美日韩国产一级片| 欧美日韩午夜在线视频| 欧美性受xxxx黑人xyx| 欧美在线影院一区二区| 欧美中文字幕一区| 欧美日韩国产影片| 在线不卡免费av| 6080午夜不卡| 日韩女优电影在线观看| 日韩一区二区不卡| 久久亚洲欧美国产精品乐播 | 制服丝袜亚洲网站| 91精品麻豆日日躁夜夜躁| 3d动漫精品啪啪1区2区免费| 在线成人高清不卡| 欧美成人猛片aaaaaaa| 久久综合九色综合欧美亚洲| 国产日韩成人精品| 亚洲日本丝袜连裤袜办公室| 亚洲一区二区五区| 免费欧美日韩国产三级电影| 国产一区福利在线| 成人黄色网址在线观看| 在线观看www91| 欧美一区二区三区免费| 久久精品欧美日韩精品| 亚洲视频 欧洲视频| 亚洲国产精品视频| 国产综合色在线视频区| 岛国精品一区二区| 欧美在线不卡视频| 久久伊人蜜桃av一区二区| 中文字幕一区日韩精品欧美| 亚洲国产人成综合网站| 国产一区日韩二区欧美三区| 97精品视频在线观看自产线路二| 欧美四级电影网| 久久久精品蜜桃| 一区二区三区中文字幕电影| 日本不卡123| 91在线国产福利| 日韩三级精品电影久久久| 中文子幕无线码一区tr| 天天色天天操综合| 国产成人综合精品三级| 欧美日韩国产欧美日美国产精品| 精品国产91亚洲一区二区三区婷婷| 中文字幕在线播放不卡一区| 首页国产丝袜综合| eeuss鲁片一区二区三区| 91精品国产综合久久精品app| 国产视频一区在线观看| 五月综合激情网| 91免费视频网| 久久久久久久久久久久久久久99 | 日本亚洲欧美天堂免费| 成人动漫一区二区在线| 日韩免费看的电影| 一个色在线综合| 国产v综合v亚洲欧| 欧美一区二区三区白人| 亚洲一区二区视频| 99久久99久久免费精品蜜臀| 日韩欧美一区在线观看| 亚洲成人先锋电影| 91日韩一区二区三区| 亚洲国产高清在线观看视频| 日本午夜一区二区| 欧美日韩国产不卡| 亚洲黄色性网站| 成人高清在线视频| 国产亚洲欧洲997久久综合| 蜜臀av亚洲一区中文字幕| 欧美日韩一区精品| 亚洲精品免费一二三区| 91亚洲午夜精品久久久久久| 国产欧美一区二区在线| 久久97超碰国产精品超碰| 91精品国产91久久综合桃花| 亚洲成人激情自拍| 欧美日韩国产高清一区二区| 亚洲线精品一区二区三区八戒| 91日韩在线专区| 一区二区三区精品| 欧美在线影院一区二区| 一区二区在线观看免费| 在线观看国产一区二区| 一区二区三区在线影院| 色综合天天天天做夜夜夜夜做| 中文字幕亚洲在| 91美女在线视频| 亚洲一区二区欧美日韩| 欧美日韩一区二区在线观看|