<foreach> 是在sql语句中进行多个id查询 时用到的,因为mybatis代替jdbc和hibernate, 使用 在xml文件中编写sql语句,这是一个标签文件.然后在 dao层?,用sqlSession.来调用这个写好的sql语句.

有时候我想会不会jdbc更简单一些??

然后,在xml中写sql语句,会碰到根据条件或者模糊查询,这个时候需要接收来自dao层的 查询条件参数.此时需要在xml文件中的sql语句中接收,并且应该没有接收,只是确定有几个占位符,等到预编译之后,再在dao层中为占位符传参数值??

不是的,dao层在调用xml中的sql语句的同时就已经传过去条件参数,只不过只能传递一个参数,所以就要用到封装,所以就会产生collection属性 是一个单参数,或者一个集合.

内部是不是预编译 ,不知道.但是反过来jdbc中为什么要预编译再传值呢,好处在哪里,然后再看这里是否内部也需要如此???

DBAccess dbAccess = new DBAccess();
SqlSession sqlSession = null;
try {
sqlSession = dbAccess.getSqlSession();
//通过 sqlSession执行sql语句
sqlSession.delete("Message.deleteBatch",ids);
//为什么DAO层这样就可以
sqlSession.commit();//jdbc是自动提交,但是mybatis中不是自动提交的
  <delete id="deleteBatch" parameterType="java.util.List">
DELETE FROM message WHERE id in (
<foreach collection="list" item="item" separator=",">
#{item}
</foreach> )
</delete>

所以此时要用到mybatis中的OGNL语言,也就是 <foreach>语句,接收条件参数放在sql语句中(在xml中)

用在in后的括号里,其实括号都可以不写,看到过相关的文档,因为foreach中有开始和结束的属性,当然有括号简便.

<delete id="deleteOne" parameterType="int">
DELETE FROM message WHERE id = #{_parameter}
</delete> <delete id="deleteBatch" parameterType="java.util.List">
DELETE FROM message WHERE id in (
<foreach collection="list" item="item" separator=",">
#{item}
</foreach> )
</delete>

但是对比只有一个参数的查询sql语句,可以看到<foreach>的作用只是在xml中实现遍历.

但是可以看到,传参数的时候,xml中接收到的参数都是其类型,没有参数,由于只有一个参数,所以不需要写参数,就用默认的_parameter或者item 表示传入的虚参数.完全没有问题.

最大的原因就是只有一个参数,简化所有....原来是一种简化.

#{} 这个是OGNL表达式?,代表传入的参数,那么为什么要用这个表达式呢,表明它是一个参数变量吗,便于区分??

谈一下思考,关于mybatis中<foreach collection="list">中list得来的原因 没看到官方说明的更多相关文章

  1. mybatis 中 foreach collection的三种用法(转)

    文章转自 https://blog.csdn.net/qq_24084925/article/details/53790287 oreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集 ...

  2. mybatis 中 foreach collection的三种用法

    foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合. foreach元素的属性主要有 item,index,collection,open,separator,close. ...

  3. Mybatis 中 foreach collection 的三种用法

    foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合. foreach元素的属性主要有 item,index,collection,open,separator,close. ...

  4. mybatis中foreach collection的三种用法

    foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合. foreach元素的属性主要有 item,index,collection,open,separator,close. ...

  5. mybatis使用foreach处理List中的Map mybatis-----传入传出多个参数,都是map或list,批量更新

    https://nannan408.iteye.com/blog/2170470 https://blog.csdn.net/xingzhishen/article/details/86424395 ...

  6. javascript中forEach()和jquery中each()的区别

    forEach是ES5中操作数组的一种方法,主要功能是遍历数组 1.forEach方法中的function回调有三个参数:第一个参数是遍历的数组内容,第二个参数是对应的数组索引,第三个参数是数组本身 ...

  7. MyBatis的foreach查询(List、Array、Map)

    mybatis 中 foreach collection的三种用法 foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合. foreach元素的属性主要有 item,index ...

  8. mybatis中foreach的用法(转)

    foreach一共有三种类型,分别为List,[](array),Map三种. foreach属性 属性 描述 item 循环体中的具体对象.支持属性的点路径访问,如item.age,item.inf ...

  9. Mybatis中的collection、association来处理结果映射

    前不久的项目时间紧张,为了尽快完成原型开发,写了一段效率相当低的代码. 最近几天闲下来,主动把之前的代码优化了一下:)   标签:Java.Mybatis.MySQL 概况:本地系统从另外一个系统得到 ...

随机推荐

  1. JavaScript历史和标准

    不管新手老手, 学门语言如果不简单了解这门语言谁创立的, 什么时候, 现在由谁来维护, 规范在哪? 总感觉, 少了点什么, 我就是这样. 历史 1994年美国网景(Netscape)公司发布自己的浏览 ...

  2. window.event.keycode值大全

    window.event.keycode值大全 event.keycode值大全 1 keycode 8 = BackSpace BackSpace 2 keycode 9 = Tab Tab 3 k ...

  3. maven 不打包hbm 问题

    <build> <resources> <resource> <directory>src/main/java</directory> &l ...

  4. CSS3 Loading进度条加载动画特效

    在线演示 本地下载

  5. c语言网络通信杂笔记

    1.sin_addr.s_addr = INADDR_ANY;设置成本地IP 2.pthread_create();线程生成函数 3.在linux下,sleep(1)是睡眠1s

  6. Mac下编译tesseract报错 DotProductAVX can't be used on Android

    因为我的mac是64位的,所以用32位编译,执行的时候肯定会出错的. 所以应该在 arch/simddetect.cpp中把这句# define X86_BUILD 1 注释掉,就可以了. 参考 ht ...

  7. 使用VBS打开程序和关闭程序

    下面这个是先执行程序后,然后再结束程序. Dim Wsh Set Wsh = WScript.CreateObject("WScript.Shell") '下行是设置延时启动时间 ...

  8. Makefile文件应用——complicated项目

    学习资料 本文主要参考资料:驾驭Makefile(李云).pdf Complicated项目 需求: (1)object文件放到objs目录下 (2)可执行文件放到exes目录下 (3)增加头文件依赖 ...

  9. springBean参数注入的几个方法

    1.普通方式注入 applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> < ...

  10. Eclipse 添加JSP模板

    0.环境 Eclipse IDE for Java EE Developers (4.3.2) win8.1系统 1.原因 Eclipse自带新建JSP为: <%@ page language= ...