iBatisNet 中 iterate标签的使用
<iterate>标签,顾名思义是用来遍历标签用的。
支持的属性如下:
属性 | 说明 | 是否必选 |
open | 遍历后生成的这些sql,开始的第一个符号 | 可选 |
close | 遍历后生成的这些sql,最后一个符号 | 可选 |
prepend | 添加在open指定的符号前面 | 可选 |
property | 被遍历的属性(往往是一个集合) | 可选 |
conjunction | 遍历后每一条sql之间的间隔 | 可选 |
各个击破,没有什么比例子最直接的了。
1. open 和close
insert into table (id,name) values<iterate open="(" close=")"> #ID#,#Name#</iterate>
不用考虑该语句的合理性,只是为了解释这两个属性随便写的,最终生成的SQL如下:
insert into table (id,name) values ('123','wh');
其中红色的两个括号,就是通过open 和close指定的。
2.conjunction-用于分割各个语句
select * from user where id in ( <iterate conjunction=","> #id# </iterate>)
生成的SQL如下:
select * from user where id in (1,2,3,4,5);
其中红色的逗号 , 就是通过conjunction指定的。
3. prepend-追加到最前面的内容
<iterate prepend="WHERE" conjunction="AND"> id=#id# </iterate>
该语句更没啥价值,只为了说明该属性,生成SQL如下:
select * from user where id='1' and id='2' and id='3'
其中prepend指定的where会被添加在<iterate>标签的最前面,conjunction作为间隔符被添加在每一条语句中间。
4.property-官教说该变量是必须的,其实并不是必须的
如果有这么一个类定义:public class Dept{ public string ID{get;set;} public List<User> Users{get;set;} } public class User{ public string ID{get;set;} punlic string Name{get;set;}}
对应的sqlmp如下(property必须的情况): <insert id="insert_u" parameterClass="Dept"> //指定parameterClass是Dept insert into user (id,name) values <iterate property="Users" conjunction=","> //设置property=Users,意思是要遍历的是Dept.Users属性 (#Users[].ID#,#Users[].Name#) //因为Users是一个集合,所以写法要求Users[]的方式访问 </iterate> </insert> //调用mapper.insert("isert_u",dept)
输出的SQL如下:
insert into user (id,name) values
('1','name1'),
('2','name2')
对应的sqlmp如下(property非必须的情况): <insert id="insert_u" parameterClass="list"> //指定parameterClass是list,是一个集合 insert into user (id,name) values <iterate conjunction=","> //不需要设置property,因为我们直接访问整个集合,而不是集合的某个属性 (#[].ID#,#[].Name#) //因为本身是一个集合,所以写法要求[]的方式访问即可 </iterate> </insert>
//调用mapper.insert("isert_u",userList);
iBatisNet 中 iterate标签的使用的更多相关文章
- Html中<font>标签的使用
Html中<font>标签的使用 <!doctype html> <html lang="en"> <head> <meta ...
- jsp2.0+中的标签文件,JSP Fragment技术
刚进新公司不久,今天在看到项目中用到了.tag文件.刚开始我还以为这个是第三方类似freemarker的模板技术.问了下项目组的其他人员,原来这是jsp2.0以来就有的JSP Fragment技术.以 ...
- Html中<a>标签的样式的设置
html中<a>标签的样式的设置.. ------------------------ <html> <head> <title>这是网页选项卡的名称& ...
- 禁止手机页面中A标签长按弹出路径框
//禁止手机页面中A标签长按弹出路径框 window.onload=function(){ document.documentElement.style.webkitTouchCa ...
- JSP中<img>标签引用本地图片
问题描述: jsp页面中<img>标签如何读取本地文件夹中的图片. 问题起因: 由于上传图片至本地文件夹中,图片路径为: D:/upload/file/image/img.jpg 所以将这 ...
- HTML中<meta>标签如何正确使用
HTML中<meta>标签如何正确使用 如果我们在浏览器中按下F12或者Ctrl+shift+J,便可以打开开发者工具,在element中即可看到<head>元素中有不少< ...
- Jquery获取iframe子/父窗口中的标签
获取子窗口中的标签: $("#id",document.frames('iframename').document); 获取父窗口中的标签: $('#id', parent.doc ...
- 在php中,如何将一个页面中的标签,替换为用户想输出的内容
前言:釜山行,暴露人性, ———————————————————————————————————————————————————————————————————————————— 今天说一个最简单的例 ...
- JSP内置标签 JSP中JavaBean标签 JSP开发模式 EL和JSTL快速入门
2 JSP内置标签(美化+业务逻辑) 1)为了取代<%%>脚本形式,使用JSP标签/JSP动作,目的:与JSP页面的美化,即JSP面页都是由标签组成,不再有其它的内容 2)JSP内 ...
随机推荐
- Bootstrap3简单好用,轻松实现手机适配
个人官网http://FansUnion.cn,前端使用Bootstrap框架.大部分的样式,轻松就实现了. 只是呢,关于导航条,被无数网友吐槽了. 通过手机访问时,导航条把屏幕给完全占居了 ...
- [转至云风的博客]谈谈陌陌争霸在数据库方面踩过的坑( Redis 篇)
« 谈谈陌陌争霸在数据库方面踩过的坑(芒果篇) | 返回首页 | linode 广告时间 » 谈谈陌陌争霸在数据库方面踩过的坑( Redis 篇) 注:陌陌争霸的数据库部分我没有参与具体设计,只是参与 ...
- 【u203】文件夹计数
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 可以用路径来描述文件夹,路径为一个包含若干部分的字符串,之间用'/'分隔.每部分均为一个文件夹的名称, ...
- 【u226】查单词
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 全国英语四级考试就这样如期到来了.可是小Y依然没有做好充分的准备.为了能够大学毕业,可怜的小Y决定作弊 ...
- 【u219】最长链
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 现给出一棵N个结点二叉树,问这棵二叉树中最长链的长度为多少,保证了1号结点为二叉树的根. [提示] 关 ...
- Activity启动模式需注意的坑
标准启动Standard模式版本差异: 在Lollipop之前,每次以MULTIPLE启动的Activity都会被压入当前任务的顶部,启动 N 次,在当前任务就会出现 N 个Activity的实例,每 ...
- sparksql hive作为数据源
根据官方文档的说法,要把hive-site.xml,core-site.xml,hdfs-site.xml拷贝到spark的conf目录下,保证mysql已经启动 java public class ...
- kindeditor 4 上传下载文件
jsp代码 1 <script type="text/javascript" src="${pageContext.request.contextPath}/kin ...
- Green the world :使用monkey_patch
eventlet的monkey_patch 用于绿化一些python的模块,看看以下的样例就明确了 urls = ["http://www.haha.mx/joke/1292935" ...
- Qt中(图片)资源的三种使用方式
Qt中使用图片资源的方法有很多种,以前我一直分不清各种之间的区别和Qt相应的处理机制,后来遇到一些实际的问题,然后再加上查阅源码和资料,总算弄明白一些事情,但是本文仅仅是个人理解,如有错误之处请告诉我 ...