语法规则:

${@path$subClass@Attr.getValueMethod}

例子:

<select id="listModelsToProTps" resultType="com.voyageone.ecerp.model.wms.WmsBtShipmentModel">
SELECT * from wms_bt_shipment${partition}
WHERE
port =${@com.voyageone.ecerp.domain.constant.wms.WmsConstant$Port@RST.value}
AND
tps_flg in (
${@com.voyageone.ecerp.domain.enums.wms.WmsEnums$TpsFlg@NOT_HANDLE.value},
${@com.voyageone.ecerp.domain.enums.wms.WmsEnums$TpsFlg@CREATED.value}
)
AND status != ${@com.voyageone.ecerp.domain.enums.wms.WmsEnums$ShipmentStatus@OPEN.value};
</select>

其中静态常量如下(对应的mapper xml代码:​​${@com.voyageone.ecerp.domain.constant.wms.WmsConstant$Port@RST.value}​​):

/**
* 港口
*
*/
public final static class Port extends AbstractTypedConstant<Integer> {

public static final Port RST = new Port(28);

private Port() {
}

public Port(Integer value) {
this.value = value;
}
}

枚举如下(对应的mapper xml代码:​​${@com.voyageone.ecerp.domain.enums.wms.WmsEnums$TpsFlg@CREATED.value}​​):

public enum TpsFlg {
NOT_HANDLE("0"),
CREATED("1"),
SHIPPED("2");
private String value;

TpsFlg(String val) {
this.value = val;
}
//这里定义了mybatis调用的方法成员,对应ms$TpsFlg@CREATED.value中的value,这应该和序列化有关
public String value() {
return value;
}
}