EOS Low-Code Platform 8 EOS Low-Code Platform 8
产品简介
学习指南
更新说明
安装与集成
初见EOS
低代码开发手册
专业代码开发手册
专题场景实战
公共服务框架
应用运行治理
升级手册
常见问题
  • inline-parameter-map
  • 概述
  • 场景示例
  • 注意

# Inline Parameter Map

# 概述

parameterMap的语法虽然简单,但很繁琐。还有一种更受欢迎更灵活的方法,可以大大简化定义和减少代码量。这种方法把属性名称嵌在Mapped Statement的定义中(即直接写在SQL语句中)。缺省情况下,任何没有指定parameterMap的Mapped Statement都会被解析成inline parameter(内嵌参数)。

# 场景示例

	<statement id="insertProduct" parameterClass="commonj.sdo.DataObject">
	  insert into PRODUCT (PRD_ID, PRD_DESCRIPTION) values (#id#, #description#);
	</statement>

这样就会从传入的DataObject查找属性名为id和description的2个属性值,赋值到相应的数据库字段。 在内嵌参数中指定数据类型可以用下面的语法:

	<statement id="insertProduct" parameterClass="commonj.sdo.DataObject">
	  insert into PRODUCT (PRD_ID, PRD_DESCRIPTION) values (#id:NUMERIC#, #description:VARCHAR#);
	</statement>

如果有null值处理,可以参考下面的语句:

	<insert id="insertProduct" parameterClass="com.domain.Product">
	  insert into PRODUCT (PRD_ID, PRD_DESCRIPTION) values (#id:NUMERIC:-999999#, #description:VARCHAR:NO_ENTRY#)
	</insert>

说明:

  • Inline Parameter Map有2种语法,一种是简单的以":"分割,这种语法只包括3种格式:

    • #propertyName#
    • #propertyName:jdbcType#
    • #propertyName:jdbcType:nullValue#
  • 第2种语法是以","分割,语法如下:#propertyName,javaType=?,jdbcType=?,mode=?,nullValue=?#。

# 注意

上面的例子中,所有的参数都用##包起来,这样生成的是PreparedStatement;还可以使用$$把参数包起来,这样生成的是Statement,即在执行sql时会先把参数放入到sql中,这在like或in条件时会有用。例如:

	<select id="selectProduct" parameterClass="commonj.sdo.DataObject">
	  select * from PRODUCT where PRD_DESCRIPTION like '%$description$%'
	</select>

	<select id="selectProduct" parameterClass="commonj.sdo.DataObject">
	  select * from PRODUCT where PRD_ID in ($prdIdList$)
	</select>

← Parameter Map以及属性 基本类型输入参数 →