EOS Low-Code Platform 8 EOS Low-Code Platform 8
产品简介
安装部署
应用开发
专题场景实战案例
低代码(Low-Code)开发参考手册
高开开发参考手册
流程开发参考手册
AFCenter 使用指南
Governor 使用指南
FAQ
  • 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>