<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. C/C++中浮点数输出格式问题

    在C语言中,浮点数的输出格式有三种:%g, %f, %e 首先要说的是%e是采用科学计数法来显示. %g与后两者有一个重要的差别,就是设置输出精度的时候,(C中默认浮点输出精度是6),%g认为,包括整 ...

  2. iOS学习之移除Main.storyboard

    每次使用Single View Application模板创建工程之后,总是会有一个Main.storyboard文件,那么,当我们使用代码布局的时候,很显然是不需要它的.那么,如何将它从工程中移除呢 ...

  3. vscode 编写c++

    参考了 配置文件之前的操作:https://www.cnblogs.com/lianshuiwuyi/p/8094388.html 配置文件具体内容:https://blog.csdn.net/qq5 ...

  4. javascript Date对象 之 获取时间

    javascript Date对象 --> 获取时间: 测试代码: <!DOCTYPE html> <html lang="en"> <head ...

  5. Linux下的查找命令which、whereis、locate、find(6/20)

    Linux下查找相关命令主要有以下4个:which.whereis.locate.find. (1)which   [-a]    cmdname1 cmdname2 ...... 命令参数: -n  ...

  6. 【JavaScript】写代码前的准备

    1.搭建开发环境,编辑器推荐HBuilder,浏览器用谷歌. 2.编写一个HelloWorld程序. HelloWorld.html <!DOCTYPE html> <html> ...

  7. Tomcat 线程池配置

    线程池 Executor代表了一个线程池,可以在Tomcat组件之间共享.使用线程池的好处在于减少了创建销毁线程的相关消耗,而且可以提高线程的使用效率.要想使用线程池,首先需要在 Service标签中 ...

  8. jQuery时间轴鼠标悬停动画

    在线演示 本地下载

  9. 《Python学习手册》(四)

    List and Dictionary 列表: 任意对象的有序集合 通过偏移读取 可变.异构.任意嵌套 常用方法: L.append(object) L.extend(iterable) L.inse ...

  10. 关于camera 构架设计的一点看法

    camera的构架目前来看有两种,一种是集中式管理,比如说建立一个引擎,引擎向上提供接口,向下管理所有模块.把camera的所有功能划分为不同的模块,又引擎统一管理.模块的结构就比较随意了,可以统一接 ...