java如何使用mybatis 3传递动态字段和值
我不熟悉Java和mybatis3。在一个项目中,我使用mybatis3
假设我有一个名为“t”的数据库表。有几列
在这个项目中,我将向mapper发送一个hashmap(包含2个键、值的ArrayList)。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>
部分错误堆栈跟踪
### 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或批注。。。先谢谢你
# 1 楼答案
不确定,但我要试一试。当你使用
#{key}
时,如果它是String
,Date
等,MyBatis会在它周围放置额外的''
。如果你给你的列名加上一个变量,你需要使用直接的String
替换,即${key}
错误日志显示类似
...right syntax to use near ''name') VALUES ('some value'...
你能试试吗