zoukankan      html  css  js  c++  java
  • 解决mybatis中#{}导致的The error may involve defaultParameterMap的问题

    今天想实现给指定表插入数据,出现了

    ### Error updating database. Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''api_assets0' (id,name, level,type,file_id)
    values
    (3' at line 1
    ### The error may exist in file [E:javaprojectadmindevide argetclassesmapperApiAssetsMapper.xml]
    ### The error may involve defaultParameterMap
    ### The error occurred while setting parameters
    ### SQL: insert into ? (id,name, level,type,file_id) values (?,?, ?,?,?) , (?,?, ?,?,?) , (?,?, ?,?,?) , (?,?, ?,?,?) , (?,?, ?,?,?) , (?,?, ?,?,?) , (?,?, ?,?,?) , (?,?, ?,?,?) , (?,?, ?,?,?) , (?,?, ?,?,?) , (?,?, ?,?,?) , (?,?, ?,?,?) , (?,?, ?,?,?) , (?,?, ?,?,?) , (?,?, ?,?,?) , (?,?, ?,?,?) , (?,?, ?,?,?) , (?,?, ?,?,?) , (?,?, ?,?,?) , (?,?, ?,?,?) , (?,?, ?,?,?) , (?,?, ?,?,?) , (?,?, ?,?,?) , (?,?, ?,?,?) , (?,?, ?,?,?) , (?,?, ?,?,?) , (?,?, ?,?,?) , (?,?, ?,?,?) , (?,?, ?,?,?) , (?,?, ?,?,?)
    ### Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''api_assets0' (id,name, level,type,file_id)
    values
    (3' at line 1
    ; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''api_assets0' (id,name, level,type,file_id)
    values

    mapper里

    int insert(@Param("list") List<ApiAssets> list,@Param("one") String one);

    XML里

    <?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.abc.devide.demo.mapper.ApiAssetsMapper">
        ……
        <insert id="insert">
            insert into #{one} (id,name, level,type,file_id)
            values
            <foreach collection="list" item="item" index="index" separator=",">
            (#{item.id},#{item.name}, #{item.level},#{item.type},#{item.fileId})
            </foreach>
        </insert>
    
    </mapper>

    解决方法:

      使用 ${} 接受表名,#{}接受其他参数

    将insert部分改为

    <insert id="insert">
            insert into ${one} (id,name, level,type,file_id)
            values
            <foreach collection="list" item="item" index="index" separator=",">
            (#{item.id},#{item.name}, #{item.level},#{item.type},#{item.fileId})
            </foreach>
    </insert>

    就可以成功执行了

    ${} 同 #{} 的区别 查看

  • 相关阅读:
    bzoj 3122 [Sdoi2013]随机数生成器(逆元,BSGS)
    归并排序
    MS-coco数据集下载及使用(转)
    转-深度学习视觉领域常用数据集汇总
    opencv-Mat数据类型及位数总结
    opencv-图像类型、深度、通道
    opencv-VS2010配置opencv2.4.8
    opencv-访问Mat中每个像素的值
    VS2010文件包含
    转载: 8个月从CS菜鸟到拿到Google Offer的经历+内推
  • 原文地址:https://www.cnblogs.com/baby123/p/11937997.html
Copyright © 2011-2022 走看看