本文介绍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'   #if($ldxxbhs && $ldxxbhs.size() > 0)  and y.ldxxbh in (  #foreach($ldxxbh in $ldxxbhs)        #if($velocityCount == 0),#end #[ldxxbhs[$velocityCount]]

   #end        )  ]]></property>

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

 #foreach($ldxxbh in $ldxxbhs)        #if($velocityCount == 0),#end #[ldxxbhs[$velocityCount]]               #end   

其中的变量$ldxxbh 保存了每次迭代获取到的list元素的值,变量$ldxxbhs表示一个list集合,可以通过三种方式设置:bean的get方法,map对象,sqlparams对象;详情请参考文章《[url=http://yin-bp.iteye.com/blog/1173652]bbossgroups 持久层模板sql变量参数设置的三种方式[/url]》,本例采用map方式设定这个list类型变量$ldxxbhs。
需要注意的是,需要把resources/velocity.properties文件相关配置项按照以下配置配置:
[size=large][color=blue][b]directive.foreach.counter.name = velocityCount
directive.foreach.counter.initial.value = 0[/b][/color][/size]

说明:
directive.foreach.counter.name
用来定义foreach循环递增变量名称,通过velocity.properties文件中全局指定这个变量名称,默认为velocityCount,项目开发之初就要确定这个变量名称,后续不能更改。

directive.foreach.counter.initial.value
用来定义循环变量velocityCount(名称由directive.foreach.counter.name属性指定)的初始值,默认从1开始,项目开发之初应将其调整为0

下面我们看看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对象,然后完成循环控制语句的执行。

bboss 动态sql使用foreach循环示例相关推荐

  1. 动态SQL之foreach标签(批量删除)

    动态SQL之foreach标签(批量删除) foreach标签的属性 collection:设置要循环的数组或集合 item:用一个字符串表示数组或集合中的每一个数据 separator:设置每次循环 ...

  2. 06.动态SQL和foreach

    动态sql: 映射文件代码: 1 <!-- 动态sql,根据名字和年龄查询,where标签会处理第一个and,其他位置的and不会自动处理 --> 2 <select id=&quo ...

  3. MyBatis动态sql之foreach用法

    目录 1.foreach元素的属性 2.collection属性值的三种情况 3.代码示例 3.1 collection属性值为List(Array等同): 3.2 collection属性值类型为M ...

  4. oracle for循环遍历数组,foreach循环

    Smarty foreach控制循环次数 1.在 smarty 中数组是经常会用到的,循环遍历数组用 section 或者 foreach ,如何得到数组长度或者判断一个数组个数呢?可以用{$arra ...

  5. JAVA日记之mybatis-2代理开发/动态sql/sql抽取/核心配置标签 ----喝最烈的酒.

    1.Mybatis的Dao层实现 1.1 传统开发方式 1.1.1编写UserDao接口 public interface UserDao {List<User> findAll() th ...

  6. 2.4.3 Mybatis 高级查询, 复杂映射, 返回主键, 动态SQL if, set, foreach, 核心配置文件深入,plugins标签, 多表查询, 嵌套查询

    目录 Mybatis 复杂映射&配置文件深入 一 Mybatis高级查询 1.1 ResutlMap属性 1.2 多条件查询(三种) 1.3 模糊查询 二 Mybatis映射文件深入 2.1 ...

  7. 浅析PowerBuilder下动态SQL语句

    作者:张继荣 王举国 谭琦 谢元呈 PowerBuilder是目前最流行的数据库开发工具之一.PowerBuilder提供了在程序代码中加入嵌入式SQL语句的功能来支持对数据库的访问.但这种嵌入式SQ ...

  8. sql语句和动态sql语句

    mybatis常用静态sql和动态sql 文章目录 mybatis常用静态sql和动态sql 静态sql 1.select 标签 2.insert, update 和 delete 3.sql标签 动 ...

  9. mybatis学习7之动态sql

    动态sql环境搭建和数据准备 工具类,获取UUID package com.shan.utils;import org.junit.Test;import java.util.UUID;public ...

最新文章

  1. MIT发布白皮书:美国欲重返世界半导体霸主!
  2. 手机无法配置exchange客户端的解决方法
  3. 三维空间碰撞问题;空间中两直线的最短距离及最近点
  4. xamarin.android蓝牙,在Android上连接Xamarin的配对蓝牙设备
  5. BUUCTF(pwn)mrctf2020_easyoverflow
  6. 蓝桥杯校内模拟值序列
  7. 谓词筛选表达式的扩展库PredicateLib
  8. Java 自定义异常(转载)
  9. LeetCode 1985. 找出数组中的第 K 大整数(排序)
  10. 雨滴桌面时间插件_真香!这 3 款软件,让你的电脑桌面清爽又高效!
  11. SpringBoot 下 Mybatis 的缓存
  12. 区块链 分片技术和闪电网络区别
  13. mysql 删除后缀表_mysql批量删除指定前缀或后缀表
  14. 基于[三星6818]芯片超声波测距驱动编写
  15. 抖音,新的流量洼地?
  16. CSU 1457 Boggle (字典树+DFS)
  17. CSDN黑科技----简单暴力
  18. java String工具类/字符串工具类 StringUtil
  19. SQL中去除重复数据的几种方法,我一次性都告诉你​
  20. 【P45】JLH 纯甲类耳放单电源版本

热门文章

  1. 基于SpringBoot的外卖项目(详细开发过程)
  2. 远程连接服务器频繁掉线,远程桌面一连就断的解决方法(经常掉线)
  3. 中望cad机械版2021中文版 知名的机械设计应用
  4. Oracle性能监控常用命令
  5. 《摔跤吧,爸爸》我们永不言弃
  6. 计算机类专业英语句型,专业英语写作万能句型
  7. 易网络APP 2.0 想你所想
  8. GPS北斗卫星信号防护装置(卫星时空防护装置)规格书
  9. 实例:Qt | 百度语音识别
  10. 金山所经历的三次伟大失败 [转载]