bboss动态sql (非原创)[二]

[url=http://yin-bp.iteye.com/blog/1262066]原文地址[/url]
本文介绍bboss 动态sql使用foreach循环示例。切入正题。
在sql配置文件中配置的sql语句有时需要用到foreach循环控制语句以及循环计数器velocityCount,以便遍历外部传入的list数据。在这里我们简单地介绍这个功能。

首先看看sql配置文件中配置的sql语句:

<property name="updateLkYjZt">
<![CDATA[
update dtjf.t_zt_zdry_cklkyjqbxx y set y.sjqszt = '5'
where y.yjlx='2'
and y.ldxxbh in (
#foreach($ldxxbh in $ldxxbhs)
#if($velocityCount == 1)
'$ldxxbh'
#else
,'$ldxxbh'
#end
#end
);
]]>
</property>



在sql语句中包含了foreach循环控制语句和循环控制变量velocityCount:

#foreach($ldxxbh in $ldxxbhs)
#if($velocityCount == 1)
'$ldxxbh'
#else
,'$ldxxbh'
#end
#end

其中的变量$ldxxbh 保存了每次迭代获取到的list元素的值,变量$ldxxbhs表示一个list集合,可以通过三种方式设置:bean的get方法,map对象,sqlparams对象;详情请参考文章《bbossgroups 持久层模板sql变量参数设置的三种方式》,本例采用map方式设定这个list类型变量$ldxxbhs。

下面我们看看java通过ConfigSQLExcutor对象executor来执行这个带foreach循环控制逻辑的sql语句代码:


public void updateLkYjZt(List<String> ldxxbhs) {
try {
Map datas = new HashMap();
datas.put("ldxxbhs",ldxxbhs);
executor.updateBean("updateLkYjZt", datas);

} catch (SQLException e) {
e.printStackTrace();
}
}

其中executor.updateBean("updateLkYjZt", datas)中的参数"updateLkYjZt"对应sql配置<property name="updateLkYjZt">中name属性的值,
Map对象datas中设置了key为“ldxxbhs”,值为list类型的变量ldxxbhs,foreach循环控制语句中通过key “ldxxbhs”来引用这个list对象,然后完成循环控制语句的执行。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值