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打印出来,看代码。查和插都改成一个数据来跟踪错误。

    四 

  • 相关阅读:
    GetAwaiter和GetResult
    Sql中的小数点和保留位数
    简单工厂类
    c#种GetType()和TypeOf()的区别
    php 内置正则配置邮箱
    通过手机号获取定位
    使用navicat连接mysql 报错:2003-Can't comment to Mysql server on '192.168.X.X'(10038)
    java基础系列(七):内部类的详解
    bootstrap : 响应式导航
    CSS
  • 原文地址:https://www.cnblogs.com/yiye/p/5903169.html
Copyright © 2011-2022 走看看