mybatis动态sql将map的key当键value写成添加语句
时间: 2023-08-01 07:07:17 浏览: 254
oracle+mybatis 使用动态Sql当插入字段不确定的情况下实现批量insert
如果您想要将Map中的key和value分别作为SQL语句中的列名和值插入到数据库中,可以使用MyBatis的动态SQL和foreach标签实现。具体步骤如下:
1. 在mapper.xml文件中编写insert语句,使用foreach标签遍历Map中的key值作为列名,value值作为列对应的值。
```xml
<insert id="insertMap" parameterType="java.util.Map">
INSERT INTO table_name
<trim prefix="(" suffix=")" suffixOverrides=",">
<foreach collection="map.keySet()" item="key">
${key},
</foreach>
</trim>
VALUES
<trim prefix="(" suffix=")" suffixOverrides=",">
<foreach collection="map.values()" item="value">
#{value},
</foreach>
</trim>
</insert>
```
2. 在Java代码中传入Map参数,调用mapper中的insertMap方法。
```java
Map<String, Object> map = new HashMap<>();
map.put("column1", "value1");
map.put("column2", "value2");
...
mapper.insertMap(map);
```
这样就可以将Map中的键值对作为SQL语句的列名和值插入到数据库中。注意,这种方式需要确保Map中的键名与表中的列名一一对应,否则会抛出SQL异常。
阅读全文