mybatis foreach的使用
foreach标签在批量插入数据库时非常方便,但是很容易出错,我没有注意括号的位置让我折腾了一个半小时找问题,醉醉哒,所以在这里记录一下foreach的使用。
首先,这是insert批量插入正确的代码:
<insert id="insertList" parameterType="map" useGeneratedKeys="true" keyProperty="messageId" >
insert into message_table (
message_id
to_member_id,
message_title,
message_body,
message_time,
message_update_time,
message_state,
message_type,
read_member_id,
del_member_id,
to_member_name,
create_time,
type_sn,
type )values
<foreach collection="messageLt" item="m" separator="," >
(#{m.messageId},
#{m.toMemberId},
#{m.messageTitle},
#{m.messageBody},
UNIX_TIMESTAMP(NOW()),
#{m.messageUpdateTime},
#{m.messageState},
#{m.messageType},
#{m.readMemberId},
#{m.delMemberId},
#{m.toMemberName},
UNIX_TIMESTAMP(NOW()),
#{m.typeSn},
#{m.type})
</foreach> </insert>
我犯的错误是:
insert tableName(
)values(
<foreach collection="messageLt" item="m" separator="," open="(" close=")" >
</foreach>
)
产生的SQL结果是:insert tableName(a,b,c)values((?,?,?),(?,?,?),(?,?,?))
报错原因插入行数不对应,正常结果应该是 insert tableName(a,b,c)values(?,?,?),(?,?,?),(?,?,?)。比较可以很明显看出问题。
下面是select的foreach使用:
<select id="selectBatchMCoupon" parameterType="map" resultMap="memberCouponResultMap">
select
mc.mcoupon_id,
mc.member_id,
mc.coupon_id,
mc.mcoupon_create_time,
mc.class_show,
c.coupon_title
from
member_coupon mc
left join eland_coupon c on c.coupon_id=mc.coupon_id
where 1=1 and mc.class_show=0 and
<if test="couponLt != null and couponLt != ''">
mc.coupon_id in
<foreach collection="couponLt" item="coupon" open="(" close=")" separator=",">
#{coupon}
</foreach> </if>
</select>
我犯的错误是:
<if test="couponLt != null and couponLt != ''">
<foreach collection="couponLt" item="coupon" open="(" close=")" separator=",">
mc.coupon_id = #{coupon}
</foreach> </if>
这个错误犯的我都尴尬。。。
mybatis foreach的使用的更多相关文章
- 解决mybatis foreach 错误: Parameter '__frch_item_0' not found
解决mybatis foreach 错误: Parameter '__frch_item_0' not found 在遍历对象的属性(是ArrayList对象)时报错: org.mybatis.spr ...
- mybatis foreach批量插入数据:Oracle与MySQL区别
mybatis foreach批量插入数据:Oracle与MySQL不同点: 主要不同点在于foreach标签内separator属性的设置问题: separator设置为","分 ...
- mybatis foreach报错It was either not specified and/or could not be found for the javaType Type handler
或许是惯性思维,在mybatis使用foreach循环调用的时候,很多时候都是传一个对象,传一个List的情况很少,所以写代码有时候会不注意就用惯性思维方法做了. 今天向sql传参,传了一个List作 ...
- Mybatis foreach标签含义
背景 考虑以下场景: InfoTable(信息表): Name Gender Age Score 张三 男 21 90 李四 女 20 87 王五 男 22 92 赵六 女 19 94 孙七 女 23 ...
- mybatis foreach 循环 list(map)
直接上代码: 整体需求就是: 1.分页对象里面有map map里面又有数组对象 2.分页对象里面有list list里面有map map里面有数组对象. public class Page { pri ...
- mybatis <forEach>标签的使用
MyBatis<forEach>标签的使用 你可以传递一个 List 实例或者数组作为参数对象传给 MyBatis.当你这么做的时候,MyBatis 会自动将它包装在一个 Map 中,用名 ...
- myBatis foreach详解【转】
MyBatis的foreach语句详解 foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合.foreach元素的属性主要有 item,index,collection,ope ...
- MyBatis foreach标签遍历数组
有时候开发中需要根据多个ID去查询,可以将ID封装为List或者数组然后使用MyBatis中的foreach标签构建in条件. 这里我将ID封装为String[]作为参数. <select id ...
- mybatis ForEach Collection集合等规范解析(转)
转自:http://blog.csdn.net/wj3319/article/details/9025349 在SQL开发过程中,动态构建In集合条件查询是比较常见的用法,在Mybatis中提供了fo ...
- mybatis foreach标签
一.批量插入数据 示例:添加订单商品表 1.模型层的相应代码 /** * 添加订单商品表 * @param ordergoods * @return */ public boolean addOrde ...
随机推荐
- xcode中使用正则表达式来搜索替换代码
有这样的需求: 类似于 GLOBAL_STR(@"请继续添加"); 这样的代码,需要批量修改为: GLOBAL_STR(@"请继续添加", nil); 这里使用 ...
- NOI上看到的几个小学奥数
:余数相同问题 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 已知三个正整数 a,b,c. 现有一个大于1的整数x,将其作为除数分别除a,b,c,得到的余数相同 ...
- Spring与ActiveMQ整合
Spring提供了对JMS的支持,需要添加Spring支持jms的包,如下: <dependency> <groupId>org.springframework</gro ...
- iOS中的__typeof与typeof
做SDK开发引入AFNetworking那么多的文件不太合适,所以这几天在精简AFNetworking,并共享中github上,https://github.com/yjh4866/Simplifie ...
- JavaNote01_变量 基本数据类型
>主要内容: 变量的初始化.赋值.读写操作 8中基本数据类型(取值范围).整数的直接量(字面量)是哪种类型.浮点数的字面量是哪种类型 >变量 >>声明变量:开启一个存储单元,用 ...
- Python之路----------生成器
一.列表生成式 想想如何创建一个列表[0,1,2,3,4,5] l = [0,1,2,3,4,5] 如果上面的列表元素足够多的话,是不是会写很多代码?看看列表生成式怎么写 #列表生成式 l = [x ...
- Ubuntu16.04配置phpmyadmin
原文 如何安装phpmyadmin-Mysql 数据库管理 使用界面管理器:系统->系统管理->新立得软件包管理器->搜索 phpmyadmin->右键标记安装.或直接使用一条 ...
- WCF 依赖注入-- Attribute
最近,工作之余学习WCF(Windows Communication Fundation)时,感觉自己还有好多的东西需要学习呀⊙﹏⊙b汗,于是想记录下自己学习WCF的心得,以鼓励自己再接再厉,同时希望 ...
- Displaying Data in a Chart with ASP.NET Web Pages (Razor)
This article explains how to use a chart to display data in an ASP.NET Web Pages (Razor) website by ...
- ubuntu command
uninstall software: sudo apt-get purge openjdk*