zoukankan      html  css  js  c++  java
  • 记录一次bug解决过程:数据迁移

    一 总结

      不擅长语言表达,勤于沟通,多锻炼

      调试MyBatis中SQL语法:foreach 问题;缺少关键字VALUES。很遗憾:它的错误报的让人找不着北。

    二 BUG描述:MyBatis中批量插入数据异常

    复制代码
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
    <mapper namespace="com.wacai.datamigration.dao.adanos.ApplicationCorpInfoMapper">
        <insert id="insertApplicationCorpInfoBean" parameterType="java.util.List">
        INSERT approve_corp_info (
            id,
            operator,
            created_time,
            updated_time
        )
        <foreach item="item" collection="list" separator=",">
            (NULL,
            #{item.operator},
            NOW(),
            NOW())
        </foreach>  
        </insert>
    </mapper>
    复制代码

      如上所示,是正确的批量插入数据的写法,这个问题犯错误两次。在传入list,且使用foreach便利来批量插入数据的时候,一定要注意括号的使用,之前出错的代码释放如下:

    复制代码
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
    <mapper namespace="com.wacai.datamigration.dao.adanos.ApplicationCorpInfoMapper">
        <insert id="insertApplicationCorpInfoBean" parameterType="java.util.List">
        INSERT approve_corp_info (
            id,
            operator,
            created_time,
            updated_time
        )
        <foreach item="item" collection="list" separator="," open="(" close=")">
            (NULL,
            #{item.operator},
            NOW(),
            NOW())
        </foreach>  
        </insert>
    </mapper>
    复制代码

      这样的代码,会报错:Column count doesn't match value count at row 1,更多插入动作,可以参考:http://www.cnblogs.com/fsjohnhuang/p/4078659.html

    三 BUG描述:MyBatis中SQL语法错误跟踪

      解决方法:将批量动作改为一个插入动作,将SQL打印出来,看代码。查和插都改成一个数据来跟踪错误。

    四 

  • 相关阅读:
    判断DataSet为空
    msxml3.dll 错误 '800c0008'
    google Map api地理位置坐标转换
    C# .net中cookie值为中文时的乱码解决方法
    windows pear 安装
    smarty2 设置、变量、函数
    简单模板类
    mysql 1366 插入错误
    Oracle修改账户口令
    C# Winform验证码
  • 原文地址:https://www.cnblogs.com/yiye/p/5903169.html
Copyright © 2011-2022 走看看