ibatis TipsのparameterMap


転載:http://xulongfa.iteye.com/blog/423576
 
parameterMapプロパティparameterMapの値は、あらかじめ定義された要素の名前に等しい.parameterMapプロパティはあまり使用されませんが、上記のparameterClassとinline parameterを使用することが多いです(後述します).注意!動的mapped statementはinline parameterのみをサポートし、parameter mapはサポートしません.parameterMapの基本思想は、JDBC PreparedStatementの値記号に一致する一連の順序付きパラメータ系列を定義することである.例:
Xmlコード
收藏代码
  •   
  •           
  •           
  •                
  •   
  •   
  •           
  •   

  • 上記の例では、parameter mapの2つのパラメータがSQL文の値記号(?)に順番に一致します.だから、最初の「?番号は「id」属性の値に置き換えられ、2番目の「?」番号は「description」プロパティの値に置き換えられます.
     
    DAO実装クラス:
    Javaコード
    收藏代码
  • public boolean addProductUseParaMap(Product product) {  
  •         init();  
  •         Object obj = null;  
  •         boolean flag = true;  
  •         try {  
  •             obj = sqlMapClient.insert("insertProduct-useParaMap", product);  
  •         } catch (SQLException e) {  
  •             flag = false;  
  •             e.printStackTrace();  
  •         }  
  •         return flag;  
  • }  

  •  
    テストクラス:
    Javaコード
    收藏代码
  • Product product = new Product();  
  • product.setId(2);  
  • product.setDescription("football");  
  • product.setPrice(106.99D);  
  • productDao.addProductUseParaMap(product);  
  • product = (Product)productDao.getProduct(new Integer(2));  
  • System.out.println(product);  

  •  
    具体的なparameterMap:
    Xmlコード
    收藏代码
  •   
  •         
  •                 [jdbcType=”VARCHAR”]  
  •                 [javaType=”string”]  
  •                 [nullValue=”NUMERIC”]   
  •                 [null=”-9999999”]  
  •         />  
  •          
  •          
  •   
  • Class      ,Class     JavaBean Map  ,Class        ,       ,
    Class                      
    

    要素:
    1.property

  • プロパティpropertyはstatementのパラメータオブジェクトに渡されるJava Beanプロパティ名です.この名称は、必要に応じてstatementに複数回出現することができる(すなわち、SQL文SET句で更新された属性、または条件としてWHERE句に出現することもできる).
     
    2.jdbcType  
    属性jdbcTypeは、この属性に付与されたデータベースフィールドのデータ型を明示的に指定するために使用されます.
    注意!ほとんどのJDBC Driverでは、フィールドがNULLである場合にのみjdbcTypeプロパティを指定する必要があります.したがって、これらのDriverでは、フィールドがNULLである場合にのみtypeプロパティを指定する必要があります.
    注意!Oracle Driverを使用している場合、NULLのフィールドにjdbcTypeプロパティを指定していない場合、これらのフィールドにNULLを割り当てると「Invalid column type」エラーが発生します.
     
    3.javaType属性javaTypeは、付与されたパラメータJava属性のクラス名を明示的に指定するために使用されます.
     
    4.nullValue(特に注意)
    属性nullValueの値は、NULLの置換値を指定するためにpropertyタイプに対して任意の正当な値であってもよい.つまり、Java Beanの属性値が指定値に等しい場合、対応するフィールドにNULLが割り当てられます.この特性により、nullをサポートしないデータ型(すなわちint,double,floatなど)にnullを割り当てることができる.これらのデータ型の属性値がnull値(すなわち、一致-9999)に一致すると、null値の代わりにNULLがデータベースに書き込まれます.
    要素
     
     
    注意!parameterMapは、特定のJavaクラスに自動的にバインドされません.したがって、上記の例では、「id」および「description」属性を持つJava Beanオブジェクトは、parameterMapの入力として使用できます.入力を特定のJavaクラスにバインドする必要がある場合は、mapped-statementのresultClassプロパティを使用します.注意!Parameter Mapの名前(name)はローカルで、SQL Map XMLファイルでのみ有効です.ただし、接頭辞としてSQL Mapの名前(すなわちルート要素の名前)を付けると、別のSQL Map XMLファイルで参照できます.たとえば、上記のparameterMapを別のファイルで参照するには、「Product.insert-product-param」という名前を使用します.