iBATIS SQL Maps之Inline Parameter Map。

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

<statement id = "insertProduct" parameterClass = "com.domain.Product" >

insert into PRODUCT(PRD_ID, PRD_DESCRIPTION)

value(#id#, #description#);

</statement>


在内嵌参数中指定数据类型和NULL的替代值可以用这样的语法:

<statement id = "insertProduct" parameterClass = "com.domain.Product">

insert into PRODUCT(PRD_ID, PRD_DESCRIPTION)

values (#id:NUMRIC:-999999#,#description:VARCHAR:NO_ENTRY#);

</statement>

注意!在内嵌参数中,要指定NULL的替代值,必须要先指定数据类型。

注意!如需要在查询时也使用NULL替代值,必须同时在resultMap中定义。

注意!如果您需要指定很多的数据类型和NULL替代值,可以使用外部的parameterMap元素,这样会使代码更清晰。


  • 基本类型输入参数
假如没必要写一个JavaBean作为参数,可以直接使用基本类型的包装类(即String,Integer,Date等)作为参数。例如:
<statement id = "insertProduct" parameter = "java.lang.Integer">
select * from PRODUCT where PRD_ID = #value#
</statement>
假设PRD_ID的数据类型是NUMERIC,要调用上面的mapped statement,可以传入一个java.lang.Integer对象作为参数。Integer对象的值将代替#value#参数。当使用基本类型包装类代替javaBean时,切记要使用#value#作为参数。Result Map也支持使用基本类型作为结果参数。
为了使定义更简洁,基本类型可以使用别名。例如,可以用“int”来代替“java.lang.Integer”。

  • Map类型输入参数
假设没必要谢一个JavaBean作为参数,而要传入的参数又不只一个时,可以使用Map类(如HashMap,TreeMap等)作为参数对象。例如:
<statement id = "insertProduct" parameterClass = "java.util.Map">
select * from PRODUCT
where PRD_CAT_ID = #catId#
and PRD_CODE = #code#
</statement>
可以注意到mapped statement的形式完全没有区别!上面的例子中,如果把Map对象作为输入参数去调用mapped statement,Map对象必须包含键值“catId”和“code”。键值引用的对象必须是合适的类型,以上面的例子来说,必须是Integer和String。Result Map也支持使用Map类型作为结果参数。
Map类型也可以使用别名。例如,可以用“map”来代替“java.util.Map”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值