标签详细说明带实例代码2
1.property属性property的值是mapped statement返回结果对象的Java Bean属性的名称(get方法)。
2.column属性column的值是ResultSet中字段的名称,该字段赋值给names属性指定的Java Bean属性。同一字段可以多次使用。注意,可能某些JDBC Driver(例如,JDBC/ODBC桥)不允许多次读取同一字段。
3.columnIndex属性columnIndex是可选的,用于改善性能。属性columnIndex的值是ResultSet中用于赋值Java Bean属性的字段次序号。在99%的应用中,不太可能需要牺牲可读性来换取性能。使用columnIndex,某些JDBC Driver可以大幅提高性能,某些则没有任何效果。
4.jdbcType属性type用于指定ResultSet中用于赋值Java Bean属性的字段的数据库数据类型(而不是Java类名)。虽然resultMap没有NULL值的问题,指定type属性对于映射某些类型(例如Date属性)还是有用的。因为Java只有一个Date类型,而SQL数据库可能有几个(通常至少有3个),为保证Date(和其他)类型能正确的赋值,某些情况下指定type还是有必要的。同样地,String类型的赋值可能来自VARCHAR,CHAR和CLOB,因此同样也有必要指定type属性(取决于JDBC Driver)。
5.javaType属性javaType用于显式地指定被赋值的Java Bean属性的类型。正常情况下,这可以通过反射从Java Bean的属性获得,但对于某些映射(例如Map和XML document),框架不能通过这种方法来获知。如果没有设置javaType,同时框架也不能获知类型信息,类型将被假定为Object。
6. nullValue属性nullValue指定数据库中NULL的替代值。因此,如果从ResultSet中读出NULL值,Java Bean属性将被赋值属性null指定的替代值。属性null的值可以指定任意值,但必须对于Java Bean属性的类型是合法的。
如果数据库中存在NULLABE属性的字段,但您需要用指定的常量代替NULL,您可以这样设置resultMap:
<resultMap id=”get-product-result” class=”com.ibatis.example.Product”>
<result property=”id” column=”PRD_ID”/>
<result property=”description” column=”PRD_DESCRIPTION”/>
<result property=”subCode” column=”PRD_SUB_CODE” nullValue=”-999”/>
</resultMap>
上面的例子中,如果PRD_SUB_CODE的值是NULL,subCode属性将被赋值-999。这让您在Java类中用基本类型的属性映射数据库中的NULLABE字段。记住,如果您要在查询和更新中同样使用这个功能,必须同时在parameterMap中指定nullValue属性。