`
wzf7065
  • 浏览: 247376 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

mybatis 使用foreach时出现"The expression 'list' evaluated to a null v

 
阅读更多

动态删除购物车中的商品

错误的写法:

 <delete id="deleteCartByMultiGoodsId" parameterType="java.util.HashMap">
 delete from ecs_cart where  user_id=#{userId}
 and  goods_id in  
   <foreach collection="list" item="goodsIdList" index="index" open="(" separator="," close=")">  
       #{goodsIdList}  
     </foreach> 
</delete>

 

正确的写法:

 <delete id="deleteCartByMultiGoodsId" parameterType="java.util.HashMap">
  delete from ecs_cart where  user_id=#{userId}
   and  goods_id in  
    <foreach collection="goodsIdList" item="goodsIdList" index="index" open="(" separator="," close=")">  
        #{goodsIdList}  
     </foreach> 
</delete>

错误的原因在于:

"你可以传递一个 List 实例或者数组作为参数对象传给 MyBatis。当你这么做的时 候,MyBatis 会自动将它包装在一个 Map 中,用名称在作为键。List 实例将会以“list” 作为键,而数组实例将会以“array”作为键。"

 

http://www.mybatis.org/mybatis-3/zh/dynamic-sql.html

分享到:
评论

相关推荐

    测试mybatis里foreach用法

    在MyBatis中,`&lt;foreach&gt;`标签是一个非常重要的元素,它主要用于动态SQL语句的构建,尤其是在处理集合数据类型如List、Array、Map时。`&lt;foreach&gt;`标签的使用可以极大地提高代码的可读性和可维护性,避免了传统的字符...

    Mybatis批量foreach merge into的用法

    然后,使用Mybatis的动态SQL语法foreach循环插入,待插入的实体bean的List通过查询数据库dual形成表。foreach的 separator 属性设置每次循环的隔离词为union连接每次形成的表为一个总表。 在总表中,条件匹配时,...

    MyBatis中Foreach参数问题.doc

    在使用MyBatis进行数据库操作时,经常会遇到一些参数传递的问题,特别是在使用`foreach`语句处理集合数据时,很容易出现“Parameter 'xxxList' not found. Available parameters are [Collection,list]”这样的错误...

    mybatis collection list string

    标题 "mybatis collection list string" 暗示了我们讨论的主题是关于MyBatis框架中与集合(List)和字符串(String)处理相关的问题。在MyBatis这个强大的持久层框架中,集合和字符串的使用非常常见,尤其是在进行数据库...

    Mybatis中foreach标签带来的空格\换行\回车问题及解决方案

    "Mybatis foreach标签带来的空格、换行、回车问题及解决方案" Mybatis 中的 foreach 标签是一个功能强大的工具,允许开发者在 SQL 语句中循环遍历集合对象。但是,在使用 foreach 标签时,经常会遇到空格、换行、...

    MyBatis 深入浅出-动态SQL

    ### MyBatis深入浅出-动态SQL #### 动态SQL概述 在处理数据库操作时,根据不同的业务逻辑拼接SQL语句是一项繁琐且容易出错的任务。这不仅增加了代码的复杂度,还可能导致SQL语法错误。为了克服这些问题,MyBatis...

    mybatis foreach标签的使用详解

    MyBatis foreach 标签的使用详解 MyBatis 中的 foreach 标签是非常常用的标签之一,它可以用来遍历集合,构建 in 条件语句或者批量操作语句。本文将详细介绍 MyBatis foreach 标签的使用详解。 foreach 标签的基本...

    解决mybatis使用char类型字段查询oracle数据库时结果返回null问题

    在使用mybatis框架对Oracle数据库进行查询操作时,如果使用char类型字段作为查询条件,可能会出现结果返回null的问题。这种情况下,需要对char类型字段进行特殊处理,以确保查询结果的正确性。 首先,需要了解...

    mybatis笔记

    ### MyBatis 笔记详解 #### 一、概述与概念 **MyBatis** 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用...

    mybatis中的动态sql, 涉及 where trim set if foreach等

    ### MyBatis中的动态SQL详解 #### 一、引言 在实际的软件开发过程中,我们经常遇到需要根据不同的业务逻辑动态生成SQL语句的情况。MyBatis作为一款优秀的持久层框架,提供了丰富的动态SQL处理机制,使得我们可以...

    MyBatis的foreach语句详解

    MyBatis的`foreach`语句是其动态SQL功能中的一个重要组成部分,主要用于处理SQL语句中的循环和集合数据。在数据库操作中,特别是在构建`IN`条件时,`foreach`非常实用,它可以避免手动拼接SQL字符串,提高代码的...

    MyBatis动态SQL是一项强大的特性,它允许我们在编写SQL语句时根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的

    MyBatis框架中的动态SQL是一项非常重要的特性,它允许开发者在执行SQL语句时根据不同的条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据库操作。在传统的JDBC编程中,开发人员常常需要手动拼接SQL语句,...

    mybatis 动态sql resultMap

    MyBatis 是一款深受开发者喜爱的持久层框架,它简化了Java应用与数据库之间的交互,尤其是在处理复杂的SQL操作时。动态SQL是MyBatis的一大特色,它可以让你在映射文件中编写灵活多变的SQL语句,极大地提高了代码的...

    MyBatis传入集合 list 数组 map参数的写法

    在MyBatis中,处理集合参数如list、array以及map是非常常见的操作。这些参数通常用于构建动态SQL,特别是当需要在`IN`语句中使用多个值时。下面将详细解释如何在MyBatis中使用这些参数类型。 1. **List参数**: 当...

    Oracle+Mybatis的foreach insert批量插入报错的快速解决办法

    在Oracle数据库中使用MyBatis的`&lt;foreach&gt;`标签进行批量插入时,可能会遇到“SQL命令未正确结束”的错误。这个问题通常由于Oracle数据库对批量插入语句的语法要求与MySQL等其他数据库系统不同所导致。以下是对这个...

    ### MyBatis动态SQL介绍说明、使用技巧和优缺点

    ### MyBatis动态SQL介绍说明、使用技巧和优缺点 #### 一、MyBatis动态SQL简介 MyBatis作为一款出色的持久层框架,通过XML或注解的方式配置SQL语句,有效地实现了Java方法与SQL语句之间的映射。动态SQL是MyBatis的...

    mybatis foreach批量插入数据:Oracle与MySQL区别介绍

    但是,在不同的数据库管理系统中,foreach标签的使用有一些区别,今天我们主要介绍MyBatis foreach批量插入数据在Oracle和MySQL中的区别。 首先,让我们先了解一下foreach标签的基本使用方法。foreach标签是MyBatis...

    Mybatis多参数查询与列表查询不同方式实现

    这样,当某个参数为null时,对应的条件就不会出现在SQL语句中。 5. **集合参数**: 如果需要根据一组ID查询,可以使用`&lt;foreach&gt;`标签遍历集合。例如,查询ID列表中的所有用户: ```xml &lt;select id=...

    mybatis 中 foreach collection的用法小结(三种)

    MyBatis 中的 foreach Collection 用法小结(三种) MyBatis 中的 foreach 语句是用来迭代一个集合,以便在 SQL 语句中生成相应的条件语句。foreach 语句的主要用途是在构建 in 条件中,例如 select * from blog ...

    springmybatis

    &lt;property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis" /&gt; &lt;property name="username" value="root"/&gt; &lt;property name="password" value="password"/&gt; &lt;mapper resource=...

Global site tag (gtag.js) - Google Analytics