111qaz2wsx 2021-04-27 11:52 采纳率: 0%
浏览 181
已结题

如何解决使用mybatis的xml的foreach 多出一个逗号?

<insert id="insertExcel" parameterType="java.util.ArrayList">

	<foreach collection="list" item="item" separator=";">
		INSERT INTO CUST_INFO
		(
		<include refid="Base_Column_List" />
		)
		VALUES
		( 
		${item.custId},
		${item.custName},
		${item.custSex},
		${item.custAge}
		)
	</foreach>
            
     
</insert>

结果

INSERT INTO CUST_INFO
  (
   
   CUST_ID,
   CUST_NAME,
   CUST_SEX,
   CUST_AGE
   
   )
VALUES
  (9, 测试9, 女, 26);
INSERT INTO CUST_INFO
  (
   
   CUST_ID,
   CUST_NAME,
   CUST_SEX,
   CUST_AGE
   
   )
VALUES
  (10, 测试10, 女, 27),

  • 写回答

7条回答 默认 最新

  • 笔下天地宽 2021-04-29 15:58
    关注

    你这个写法有问题的,在mybatis里面,一个mapper里面只能执行一个SQL语句的,不管是batch insert还是直接insert。

    你这个应该是想批量插入,但是你循环的话就产生了多个insert,最终肯定是执行不成功的,应该修改遍历的部分,直接只遍历后面的values:

    <insert id="insertExcel" parameterType="java.util.ArrayList">
        INSERT INTO CUST_INFO(
        <include refid="Base_Column_List" />
        )
        VALUES
        <foreach collection="list" item="item" separator=",">
            (
            ${item.custId},
            ${item.custName},
            ${item.custSex},
            ${item.custAge}
            )
        </foreach>
    </insert>
    

    这样写。

    因为MySQL的批量插入是支持这种的  insert into basic_info(user_id) VALUES('128'),('129'),('130')。相当于是直接插入了三条。

    如果回答对你有帮助,可采纳~

    评论

报告相同问题?

悬赏问题

  • ¥40 微信小程序 使用vant组件ActionSheet 下拉面板,内容区域滚动会触发。scroll-view自定义下拉刷!即使设置停止下拉刷新也不行。
  • ¥15 专业问题提问,7月5号2点之前
  • ¥25 使用cube ai 导入onnx模型时报错
  • ¥15 关于#微信小程序#的问题:用一个网页显示所有关联的微信小程序数据,包括每个小程序的用户访问量
  • ¥15 root的安卓12系统上,如何使apk获得root或者高级别的系统权限?
  • ¥20 关于#matlab#的问题:如果用MATLAB函数delayseq可以对分数延时,但是延时后波形较原波形有幅度上的改变
  • ¥15 使用华为ENSP软件模拟实现该实验拓扑
  • ¥15 通过程序读取主板上报税口的数据
  • ¥15 matlab修改为并行
  • ¥15 尝试访问%1服务的windows注册表时遇到问题。必须先解决此问题,然后才能运行安装过程。(请确认您正在使用管理员权限运行)373