구현 클래스에서 직접 핸들러 클래스를 수정할 수 있지만, 일부 상황에서는 자동으로 핸들러 클래스를 편집하는 것이 더 편리합니다.
인터페이스에 대한 핸들러 클래스 작성 마법사를 사용하여. 워크벤치가 핸들러 클래스를 생성한 구현 클래스에서 핸들러 클래스를 분리할 수 있습니다. 워크벤치는 새 파일에서 해당되는 핸들러 클래스를 작성합니다. 워크벤치는 또한 @Handler 어노테이션을 인터페이스에 추가합니다.
구현 클래스에서 핸들러 클래스를 작성하여 개별 파일에 놓으려면 다음을 수행하십시오.
@Select(sql = "SELECT PRODUCT_NUMBER, BASE_PRODUCT_NUMBER, INTRODUCTION_DATE," + " DISCONTINUED_DATE, PRODUCT_TYPE_CODE, PRODUCT_COLOR_CODE, PRODUCT_SIZE_CODE," + " PRODUCT_BRAND_CODE, PRODUCTION_COST, GROSS_MARGIN, PRODUCT_IMAGE" + " FROM GOSALES.PRODUCT") Iterator<Product> getProducts();
인터페이스에 대한 구현 클래스에는 @generated 태그와 이 메소드에 대한 다음 핸들러 클래스가 포함됩니다.
public static class GetProductsRowHandler extends BaseRowHandler<Product> { public Product handle (java.sql.ResultSet rs, Product returnObject) throws java.sql.SQLException { returnObject = new Product (); returnObject.setProduct_number(getInt (rs, 1)); returnObject.setBase_product_number(getInt (rs, 2)); returnObject.setIntroduction_date(getTimestamp (rs, 3)); returnObject.setDiscontinued_date(getTimestamp (rs, 4)); returnObject.setProduct_type_code(getInt (rs, 5)); returnObject.setProduct_color_code(getInt (rs, 6)); returnObject.setProduct_size_code(getInt (rs, 7)); returnObject.setProduct_brand_code(getInt (rs, 8)); returnObject.setProduction_cost(getBigDecimal (rs, 9)); returnObject.setGross_margin(getDouble (rs, 10)); returnObject.setProduct_image(getString (rs, 11)); return returnObject; } }
인터페이스에 대한 핸들러 클래스 작성 마법사를 사용한 후, 워크벤치는 핸들러 클래스를 포함할 GetProductsRowHandler.java 파일을 작성합니다. 워크벤치는 또한 핸들러 클래스 없이 구현 클래스를 다시 생성합니다. 편집하기 위해 구현 클래스를 열지 않아도 직접 핸들러 클래스를 편집할 수 있습니다.
인터페이스에서, 메소드에는 이제 @Handler 어노테이션이 있습니다.
@Handler(rowHandler=aforementioned.GetProductsRowHandler.class) @Select(sql = "SELECT PRODUCT_NUMBER, BASE_PRODUCT_NUMBER, INTRODUCTION_DATE," + " DISCONTINUED_DATE, PRODUCT_TYPE_CODE, PRODUCT_COLOR_CODE, PRODUCT_SIZE_CODE," + " PRODUCT_BRAND_CODE, PRODUCTION_COST, GROSS_MARGIN, PRODUCT_IMAGE" + " FROM GOSALES.PRODUCT") Iterator<Product> getProducts();