Même si vous modifiez la classe de gestionnaire directement dans la classe d'implémentation, dans certaines situations, il est préférable de modifier la classe de gestionnaire elle-même.
Dans l'assistant Créer les classes de gestionnaire pour l'interface, vous pouvez séparer les classes de gestionnaire des classes d'implémentation dans lesquelles elles ont été générées par l'assistant. Le plan de travail crée ces classes de gestionnaire dans de nouveaux fichiers. Le plan de travail ajoute également des annotations @Handler aux interfaces.
Pour créer une classe de gestionnaire à partir d'une classe d'implémentation et la placer dans un fichier séparé, procédez comme suit :
@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();
La classe d'implémentation pour l'interface contient une balise @generated ainsi que la classe de gestionaire suivante pour cette méthode :
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;
}
}
Après avoir utilisé l'assistant Créer des classes de gestionnaire pour l'interface, le plan de travail crée le fichier GetProductsRowHandler.java pour y placer la classe de gestionnaire. Le plan de travail régénère également la classe d'implémentation sans la classe de gestionnaire. Vous pouvez modifier la classe de gestionnaire directement, sans devoir ouvrir la classe d'implémentation pour l'éditer.
Dans l'interface, la méthode contient désormais une annotation @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();