EOS Low-Code Platform 8 EOS Low-Code Platform 8
产品简介
学习指南
更新说明
安装与集成
初见EOS
低代码开发手册
专业代码开发手册
专题场景实战
公共服务框架
应用运行治理
升级手册
常见问题
  • parameter-map以及属性
  • Parameter Map
  • Parameter的属性
  • property
  • jdbcType
  • javaType
  • nullValue

# Parameter Map以及属性

# Parameter Map

parameterMap负责将对象属性映射成statement的参数。

	<parameterMap  id="parameterMapName" class="commonj.sdo.DataObject">
	   <parameter property ="propertyName"
	             [jdbcType="VARCHAR"] [javaType="string"]
	            [nullValue="NUMERIC"]/>
	   <parameter ...... />
	   <parameter ...... />
	</parameterMap>

括号[ ]是可选的属性。一个parameterMap可包含任意多的parameter元素。下面讨论parameter的各个属性。

# Parameter的属性

# property

属性property是传给statement的参数对象的属性名称。该名称根据需要,可以在statement中多次出现。

# jdbcType

属性jdbcType用于显式地指定给本属性(property)赋值的数据库字段的数据类型。对于某些特定的操作,如果不指定字段的数据类型,某些JDBC Driver无法识别字段的数据类型。一个很好的例子是PreparedStatement.setNull(int parameterIndex, int sqlType)方法,要求指定数据类型。如果不指定数据类型,某些Driver可能指定为Types.Other或Types.Null。但是,不能保证所有的Driver都表现一致。对于这种情况,需要使用该属性来指定数据库字段的类型。

说明:当字段可以为NULL时最好设置jdbcType属性,否则某些Jdbc Driver会抛出异常,如db2的jcc驱动。

另一需要指定jdbcType属性的情况是字段类型为日期时间类型的情况。因为Java只有一个Date类型(java.util.Date),而大多数SQL数据库有多个(通常至少有3种)。因此,需要指定字段类型是DATE还是DATETIME。 属性jdbcType可以是java.sql.Types类中定义的任意参数的字符串值。虽然如此,还是有某些类型不支持(即BLOB)。Parameter Map和Result Map支持的数据类型说明命名SQL支持的数据类型。

# javaType

属性javaType用于显式地指定被赋值参数的类型。如果没有提供类型将被假定为Object类型。

# nullValue

属性nullValue的值可以是对于property类型来说任意的合法值,用于指定NULL的替换值。即当属性值等于指定值时,相应的字段将赋值NULL。这个特性允许在应用中给不支持null的数据类型(即int、double、float等)赋值null。

	<parameterMap id="insert-product-param" class="commonj.sdo.DataObject">
	  <parameter property="id" jdbcType="NUMERIC" javaType="int" nullValue="-9999999"/>
	  <parameter property="description" jdbcType="VARCHAR" nullValue="NO_ENTRY"/>
	</parameterMap>
	<insert id="insertProduct" parameterMap="insert-product-param">
	  insert into PRODUCT (PRD_ID, PRD_DESCRIPTION) values (?,?)
	</insert>

当id的属性值=-9999999的时候,会给PRD_ID设个null值。

← Mapped Statement以及属性 Inline Parameter Map →