gpt4 book ai didi

java - 如何使用mybatis 3传递动态字段和值

转载 作者:行者123 更新时间:2023-12-02 13:04:46 37 4
gpt4 key购买 nike

我是 Java 和 mybatis3 的新手。在一个项目中我使用的是mybatis3..

假设我有名为“t”的数据库表。有几个列。

在项目中我将发送一个hashmap(包含2个key、value的ArrayList)到mapper.xml。从那里它将得到 2 个数组,其中包含列名称的键和列的值...

我想插入到该表中...这样,我想我将能够动态插入数据并部分更新一些列数据...通过更新...但出现sql语法错误...

我现有的mapper.xml代码

<insert id="createNews" parameterType="map" useGeneratedKeys="true" keyColumn="id">
INSERT INTO t
<foreach item="key" collection="Key" index="index" open="(" separator="," close=")">
#{key}
</foreach>
VALUES
<foreach item="value" collection="Value" index="index" open="(" separator="," close=")">
#{value}
</foreach>
;
</insert>

部分错误 stackTrace....

### Error updating database.  Cause:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 ''name'
)
VALUES
(
'some value'
' at line 3

但是当我对列名称进行硬编码时,它可以正常工作...我如何动态插入...

注意:我用谷歌搜索,但找不到...我不想使用任何 pojo 或注释...提前致谢...

最佳答案

不确定,但我会尝试一下。当你使用#{key}时,如果它是StringDate,MyBatis会在它周围添加额外的''。等等。如果您使用变量指定列名称,则需要使用直接 String 替换,即 ${key}

错误日志显示类似...在“名称”附近使用的正确语法) VALUES ('some value'...

你可以试试吗

<insert id="createNews" parameterType="map" useGeneratedKeys="true" keyColumn="id">
INSERT INTO t
<foreach item="key" collection="Key" index="index" open="(" separator="," close=")">
${key}
</foreach>
VALUES
<foreach item="value" collection="Value" index="index" open="(" separator="," close=")">
#{value}
</foreach>
</insert>

关于java - 如何使用mybatis 3传递动态字段和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25877458/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com