iBtais 多重嵌套循环
iBatis支持集合循环, 但是如何做到双重循环, 请见下例子
例子描述:
需要去三张结构相同的表中获取信息, 需要将信息拼合去重后返回
入参数据类型: Map<String,Object>, regions = List<OrderRegionNum>
class OrderRegionNums{
String regionSchema
String regionCode
List<Integer> orderNums
}
注意的是在标签中的property属性中使用时:不需要加 $或者# 直接regions[].orderNums
<select id="selectOrderNumListByRegionCodeByListOrderNum" resultMap="orderNumInfo" parameterClass="java.util.HashMap">
<dynamic>
<iterate property="regions" conjunction="UNION">
select distinct(r.ID),r.ORD_NR,r.ORD_RGN_CD
from $regions[].regionSchema$.table
where
r.EXCH_SRVCR_QT > 0
and r.ORD_RGN_CD = #regions[].regionCode#
and r.ORD_NR in
<iterate property="regions[].orderNums" open="(" close=")" conjunction="," >
#regions[].orderNums[]#
</iterate>
</iterate>
</dynamic>
</select>
----------------------------------------------------------------------------------------------------------------------
<isNotEmpty prepend="and" property="marketShopAuthFlatAreaDtos">
<iterate property="marketShopAuthFlatAreaDtos" conjunction="or">
project_id in
<iterate conjunction=',' property="marketShopAuthFlatAreaDtos[].projectIds" open="(" close=")">
#marketShopAuthFlatAreaDtos[].projectIds[]#</iterate>
AND
(
1!=1
<isNotEmpty prepend="or" property="marketShopAuthFlatAreaDtos[].provinceNodes" >
shop_address_province in
<iterate conjunction=',' property="marketShopAuthFlatAreaDtos[].provinceNodes" open="(" close=")">
#marketShopAuthFlatAreaDtos[].provinceNodes[].nodeCode#</iterate> </isNotEmpty>
<isNotEmpty prepend="or" property="marketShopAuthFlatAreaDtos[].cityNodes">
shop_address_city in
<iterate conjunction=',' property="marketShopAuthFlatAreaDtos[].cityNodes" open="(" close=")">
#marketShopAuthFlatAreaDtos[].cityNodes[].nodeCode#</iterate> </isNotEmpty> <isNotEmpty prepend="or" property="marketShopAuthFlatAreaDtos[].countyNodes"> shop_address_country in
<iterate conjunction=',' property="marketShopAuthFlatAreaDtos[].countyNodes" open="(" close=")">
#marketShopAuthFlatAreaDtos[].countyNodes[].nodeCode#</iterate> </isNotEmpty>
<isNotEmpty prepend="or" property="marketShopAuthFlatAreaDtos[].townNodes"> shop_address_street in
<iterate conjunction=',' property="marketShopAuthFlatAreaDtos[].townNodes" open="(" close=")">
#marketShopAuthFlatAreaDtos[].townNodes[].nodeCode#</iterate> </isNotEmpty>
)
</iterate> </isNotEmpty>
------------------------------------------------------------------------------------------------------------
<sql id="Example_Where_Clause">
<where>
<foreach collection="oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
iBtais 多重嵌套循环的更多相关文章
- java如何跳出多重嵌套循环
Java里的break能跳出循环但是只能跳出一个,goto这个在java中也只是被当作关键是,没有任何作用 要做到跳出多重嵌套循环,可以用此方法 在循环体开头设置一个标志位,设置一个标记,然后使用带此 ...
- ThinkPHP学习 volist标签高级应用之多重嵌套循环、隔行变色(转)
Action代码: public function index(){ $prod = I("get.prod_en"); $id = I("get.id", 0 ...
- 【笔试题】在 Java 中,如何跳出当前的多重嵌套循环?
笔试题 在 Java 中,如何跳出当前的多重嵌套循环? public class Demo { public static void main(String[] args) { System.out. ...
- 如何在java中跳出当前多重嵌套循环?有几种方法?
如何在java中跳出当前多重嵌套循环?有几种方法? - 两种方法 - 1.在外层循环定义标记 ok: for(int i=0;i<100;i++){ ...
- Java中如何指定跳出多重嵌套循环
今天做项目优化涉及到一个跳出指定多重嵌套循环的问题,觉得还是记录一下那么在Java中如何跳出当前的多重嵌套循环? 方法一:可以在需要的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的br ...
- java基础面试题:java中有没有goto? 在JAVA中如何跳出当前的多重嵌套循环?
goto是Java的保留关键字,但是从来没有直接使用到goto,goto的跳转作用在Java中受到了限制,只有在特定场合下才能使用,如while for等循环中用continue.break或结合标签 ...
- 在JAVA中怎样跳出当前的多重嵌套循环?
在JAVA中怎样跳出当前的多重嵌套循环? 这道题是考察大家对于break语句的应用.同一时候也是对你多重嵌套循环的使用进行考察.在java中,要想跳出多重循环,能够在外循环语句前面定义 ...
- Java中跳出多重嵌套循环的方法
一.使用标号 1.多重嵌套循环前定义一个标号 2.里层循环的代码中使用带有标号 break 的语句 public static void main(String[] args) { ok: for(i ...
- java跳出多重嵌套循环
public class BreaklFor { public static void main(String args[]){ OK: //设置一个标记 使用带此标记的break语句跳出多重循环体 ...
随机推荐
- c# System.Console
System.Console类公开了和操作控制台相关的有用的静态字段和静态方法.下面是System.Console中一些较为重要的方法. public static void Beep()该方法播放蜂 ...
- java split方法
String a = "O|O||"; System.out.println(a.split("\\|").length); //["O", ...
- GIS 案例教程-蜂窝多边形制作模型
GIS 案例教程-蜂窝多边形制作模型 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 优点: 拖放式,非编程,复制即用,不用配置. 效率高,非迭代,可以处理大数据. ...
- 计算系统中互联设备Survey
Survey of Inter-connects in computer system 姚伟峰 http://www.cnblogs.com/Matrix_Yao/ https://github.co ...
- vue中less文件全局引用
1.先安装sass-resources-loader npm install sass-resources-loader 2.然后在build->utils.js修改less配置 在less ...
- 用spring的@Scheduled实现定时任务
先在spring的配置文件中添加扫描 在applicationContext.xml中添加 <task:annotation-driven/>,我用的是idea有提示功能 选择第一个后会 ...
- 在类文件中创建 写入Json文件
由于业务需要 今天写了一个方法能够定时更新Json文件 即定时从数据库中查询数据 然后转化为Json对象 如果有数据的话 删掉之前的Json文件 重新创建一个文件 然后写入Json对象 中间走了很多弯 ...
- Linux内核d_path函数应用的经验总结
问题背景 一个内核模块中,需要通过d_path接口获取文件的路径,然后与目标文件白名单做匹配. 在生产环境中,获取的文件是存在的,但是与文件白名单中的文件总是匹配失败. 问题定位: 通过打印d_pat ...
- python day09 函数(第一篇)
2019.4.9 S21 day09笔记总结 一.三元运算 三元运算又叫三目运算.(是为了赋值的) v = 前面 if 条件 else 后面 #条件为真,v取if前面的值:条件为假,v取if后面的值 ...
- com.android.support:design
Error:Could not find com.android.support:design:27.3.1.Required by: project :app Please install the ...