| 次へ >

演習 3: 生成されたインターフェース InventoryLevelsData を調べる

InventoryLevelsData インターフェースは、INVENTORY_LEVELS 表の照会と更新を行うために他のアプリケーションでも使用できる再使用可能な Java オブジェクトです。
この演習では、このインターフェースの内容について詳しく説明します。

生成した InventoryLevelsData インターフェースを表示するには、以下のようにします。

  1. 中ほどのペインにある InventoryLevelsData.java タブに移動します。
  2. クラスのセクションを表示します。 クラスには以下のセクションがあります。
    標準 Java セクション
    最初のセクションは、Java クラスの標準のセクションです。 このセクションは、クラスが所属する Java パッケージを宣言し、クラスについて説明するコメントを含み、他のパッケージからクラスをインポートし、クラスの開始を宣言します。これらの 2 つの import ステートメントがあることに注意してください。
    import com.ibm.pdq.annotation.Select;
    import com.ibm.pdq.annotation.Update;
    @Select および @Update は pureQuery がこのインターフェースで使用する 2 つのアノテーションです。この後、詳しく説明します。
    アノテーション付きのメソッド
    演習 1 で「表からの pureQuery コードの生成」ウィザードの終了時に、pureQuery が使用できるすべての SQL ステートメントを生成するように指定しました。それで、このインターフェースには 9 つの SQL ステートメントが含まれており、9 つのメソッドが宣言されています。 それぞれのメソッドは、SELECT、INSERT、UPDATE、または DELETE ステートメントのいずれかのアノテーションが付けられています。
    SELECT ステートメントのアノテーションが付けられているメソッド
    以下のメソッドは @Select アノテーションを使用します。
    • getInventoryLevelss() メソッド
      getInventoryLevelss() メソッドは Inventory Levels Bean のイテレーターを返します。
      	// Select all GOSALES.INVENTORY_LEVELSs
      	@Select(sql = "SELECT INVENTORY_YEAR, INVENTORY_MONTH, WAREHOUSE_BRANCH_CODE,"
      	               + "  PRODUCT_NUMBER, OPENING_INVENTORY, QUANTITY_SHIPPED, ADDITIONS,"
      	               + "  UNIT_COST, CLOSING_INVENTORY, AVERAGE_UNIT_COST"
      	               + "  FROM GOSALES.INVENTORY_LEVELS")
      	Iterator<InventoryLevels> getInventoryLevelss();
      アノテーションに @Select という名前が付いており sql 属性が含まれていることに注意してください。 SELECT ステートメントを使用するとき、このアノテーションの sql 属性が挿入されます。
      ヒント: メソッドに命名するとき、pureQuery は Bean の名前の前に get を付けます。 また、メソッドは可能性のあるすべての InventoryLevels Bean を返すので、自動的に S が最後に追加されます。それで、getInventoryLevelss() の最後の S はタイプミスではありません。これは、Inventory_level Bean が複数であることを示しています。
    • SELECT ステートメントの WHERE 節のそれぞれのフィールドを取る getInventoryLevels() メソッド
      	// Select GOSALES.INVENTORY_LEVELS by parameters
      	@Select(sql = "SELECT INVENTORY_YEAR, INVENTORY_MONTH, WAREHOUSE_BRANCH_CODE,"
      	               + "  PRODUCT_NUMBER, OPENING_INVENTORY, QUANTITY_SHIPPED, ADDITIONS,"
      	               + "  UNIT_COST, CLOSING_INVENTORY, AVERAGE_UNIT_COST"
      	               + "  FROM GOSALES.INVENTORY_LEVELS"
      	               + "  WHERE INVENTORY_YEAR = ? AND INVENTORY_MONTH = ? AND WAREHOUSE_BRANCH_CODE = ?"
      	               + "    AND PRODUCT_NUMBER = ?")
      	InventoryLevels getInventoryLevels(short inventoryYear,
      			short inventoryMonth, int warehouseBranchCode, int productNumber);
      このメソッドでは、主キーを構成し WHERE 節にリストされている各列に対応するフィールドを渡します。このメソッドは結果として 1 つの InventoryLevels Bean を返します。
    • InventoryLevels Bean のインスタンスをパラメーターとする getInventoryLevels() メソッド
      	// Select GOSALES.INVENTORY_LEVELS by InventoryLevels object
      	@Select(sql = "SELECT INVENTORY_YEAR, INVENTORY_MONTH, WAREHOUSE_BRANCH_CODE,"
      	               + "  PRODUCT_NUMBER, OPENING_INVENTORY, QUANTITY_SHIPPED, ADDITIONS,"
      	               + "  UNIT_COST, CLOSING_INVENTORY, AVERAGE_UNIT_COST"
      	               + "  FROM GOSALES.INVENTORY_LEVELS"
      	               + "  WHERE INVENTORY_YEAR = :inventoryYear AND INVENTORY_MONTH = :inventoryMonth"
      	               + "    AND WAREHOUSE_BRANCH_CODE = :warehouseBranchCode"
      	               + "    AND PRODUCT_NUMBER = :productNumber")
      	InventoryLevels getInventoryLevels(InventoryLevels i);
      このメソッドでは、WHERE 節にある主キー列の値を含む InventoryLevels Bean を渡します。 このメソッドは結果として 1 つの InventoryLevels Bean を返します。
    INSERT ステートメントのアノテーションが付けられているメソッド
    以下のメソッドは @Update アノテーションを使用します。
    • 個々のフィールドをパラメーターにする createInventoryLevels メソッド
      	// Create GOSALES.INVENTORY_LEVELS by parameters
      	@Update(sql = "INSERT INTO GOSALES.INVENTORY_LEVELS (INVENTORY_YEAR, INVENTORY_MONTH,"
      	               + "  WAREHOUSE_BRANCH_CODE, PRODUCT_NUMBER, OPENING_INVENTORY, QUANTITY_SHIPPED,"
      	               + "  ADDITIONS, UNIT_COST, CLOSING_INVENTORY, AVERAGE_UNIT_COST)"
      	               + "  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)")
      	int createInventoryLevels(short inventoryYear, short inventoryMonth,
      			int warehouseBranchCode, int productNumber, int openingInventory,
      			int quantityShipped, int additions, BigDecimal unitCost,
      			int closingInventory, BigDecimal averageUnitCost);
      このメソッドでは、挿入する行のすべての列にそれぞれ対応するフィールドを渡します。このメソッドは、挿入が成功した場合は 1 を、失敗した場合は 0 を返します。
    • InventoryLevels Bean のインスタンスをパラメーターとする createInventoryLevels() メソッド
      	// Create GOSALES.INVENTORY_LEVELS by InventoryLevels Object
      	@Update(sql = "INSERT INTO GOSALES.INVENTORY_LEVELS (INVENTORY_YEAR, INVENTORY_MONTH,"
      	               + "  WAREHOUSE_BRANCH_CODE, PRODUCT_NUMBER, OPENING_INVENTORY, QUANTITY_SHIPPED,"
      	               + "  ADDITIONS, UNIT_COST, CLOSING_INVENTORY, AVERAGE_UNIT_COST)"
      	               + "  VALUES (:inventoryYear, :inventoryMonth, :warehouseBranchCode,"
      	               + "    :productNumber, :openingInventory, :quantityShipped, :additions,"
      	               + "    :unitCost, :closingInventory, :averageUnitCost)")
      	int createInventoryLevels(InventoryLevels i);
      このメソッドでは、挿入する行の列の値を含む InventoryLevels Bean を渡します。 このメソッドは、挿入が成功した場合は 1 を、失敗した場合は 0 を返します。
    UPDATE ステートメントのアノテーションが付けられているメソッド
    以下のメソッドは @Update アノテーションを使用します。
    • 個々のフィールドをパラメーターにする updateInventoryLevels() メソッド
      	// Update GOSALES.INVENTORY_LEVELS by parameters
      	@Update(sql = "UPDATE GOSALES.INVENTORY_LEVELS"
      	               + "  SET INVENTORY_YEAR = ?, INVENTORY_MONTH = ?, WAREHOUSE_BRANCH_CODE = ?,"
      	               + "      PRODUCT_NUMBER = ?, OPENING_INVENTORY = ?, QUANTITY_SHIPPED = ?,"
      	               + "      ADDITIONS = ?, UNIT_COST = ?, CLOSING_INVENTORY = ?, AVERAGE_UNIT_COST = ?"
      	               + "  WHERE INVENTORY_YEAR = ? AND INVENTORY_MONTH = ? AND WAREHOUSE_BRANCH_CODE = ?"
      	               + "    AND PRODUCT_NUMBER = ?")
      	int updateInventoryLevels(short inventoryYear, short inventoryMonth,
      			int warehouseBranchCode, int productNumber, int openingInventory,
      			int quantityShipped, int additions, BigDecimal unitCost,
      			int closingInventory, BigDecimal averageUnitCost,
      			short inventoryYear_K, short inventoryMonth_K,
      			int warehouseBranchCode_K, int productNumber_K);
      このメソッドでは、更新する行のすべての列にそれぞれ対応するフィールドを渡します。このメソッドは、更新が成功した場合は 1 を、失敗した場合は 0 を返します。
    • InventoryLevels Bean のインスタンスをパラメーターとする updateInventoryLevels() メソッド
      	// Update one GOSALES.INVENTORY_LEVELS by InventoryLevels object
      	@Update(sql = "UPDATE GOSALES.INVENTORY_LEVELS"
      	               + "  SET OPENING_INVENTORY = :openingInventory, QUANTITY_SHIPPED = :quantityShipped,"
      	               + "      ADDITIONS = :additions, UNIT_COST = :unitCost, CLOSING_INVENTORY = :closingInventory,"
      	               + "      AVERAGE_UNIT_COST = :averageUnitCost"
      	               + "  WHERE INVENTORY_YEAR = :inventoryYear AND INVENTORY_MONTH = :inventoryMonth"
      	               + "    AND WAREHOUSE_BRANCH_CODE = :warehouseBranchCode"
      	               + "    AND PRODUCT_NUMBER = :productNumber")
      	int updateInventoryLevels(InventoryLevels i);
      このメソッドでは、更新する行の列の値を含む InventoryLevels Bean を渡します。 このメソッドは、更新が成功した場合は 1 を、失敗した場合は 0 を返します。
    DELETE ステートメントのアノテーションが付けられているメソッド
    以下のメソッドは @Update アノテーションを使用します。
    • 個々のフィールドをパラメーターにする deleteInventoryLevels() メソッド
      	// Delete GOSALES.INVENTORY_LEVELS by parameters
      	@Update(sql = "DELETE FROM GOSALES.INVENTORY_LEVELS"
      	               + " WHERE INVENTORY_YEAR = ? AND INVENTORY_MONTH = ? AND WAREHOUSE_BRANCH_CODE = ?"
      	               + "    AND PRODUCT_NUMBER = ?")
      	int deleteInventoryLevels(short inventoryYear, short inventoryMonth,
      			int warehouseBranchCode, int productNumber);
      このメソッドでは、削除する行のすべての主キー列にそれぞれ対応するフィールドを渡します。このメソッドは、削除が成功した場合は 1 を、失敗した場合は 0 を返します。
    • InventoryLevels Bean のインスタンスをパラメーターとする deleteInventoryLevels() メソッド
      	// Delete one GOSALES.INVENTORY_LEVELS by InventoryLevels object
      	@Update(sql = "DELETE FROM GOSALES.INVENTORY_LEVELS"
      	               + " WHERE INVENTORY_YEAR = :inventoryYear AND INVENTORY_MONTH = :inventoryMonth"
      	               + "    AND WAREHOUSE_BRANCH_CODE = :warehouseBranchCode"
      	               + "    AND PRODUCT_NUMBER = :productNumber")
      	int deleteInventoryLevels(InventoryLevels i);
      このメソッドでは、削除する行の主キー列の値を含む InventoryLevels Bean を渡します。 このメソッドは、削除が成功した場合は 1 を、失敗した場合は 0 を返します。
SQL ステートメントを編集して、メソッドの追加や除去を行えます。 続く演習では、SQL ステートメントの編集やテストを簡単に行うフィーチャーに関して学習します。
| 次へ >

フィードバック