Mybatis通用动态新增数据
通过修改接口入参,动态获取表名、字段名,新增数据。
//获取接口入参
JSONObject jsonParams = JSONObject.fromObject("inParamXml");
Map<String, Object> params = new HashMap<>();
List<String> keys = new ArrayList<>();
List<String> values = new ArrayList<>();
//获取表名 主键名 主键值
String tableName = jsonParams.getString("tableName");
String primaryKey = jsonParams.getString("primaryKey");
String primaryValue = jsonParams.getString(primaryKey);
Set<?> entrySet = jsonParams.entrySet();
Iterator<?> iterator = entrySet.iterator();
while (iterator.hasNext()) {
Entry<String, String> entry = (Entry<String, String>) iterator.next();
String key = entry.getKey();
String value = entry.getValue();
if (!"tableName".equals(key) && !"primaryKey".equals(key) && !primaryKey.equals(key)) {
keys.add(key);
values.add(value);
}
}
params.put("primaryKey", primaryKey);
params.put("primaryValue", primaryValue);
params.put("tableName", tableName);
params.put("keys", keys);
params.put("values", values);
Mybatis动态sql配置
<!-- 通用新增数据 -->
<insert id="insertCommonInsertInfo" parameterType="java.util.Map">
INSERT INTO ${tableName}
(${primaryKey},
<foreach collection='keys' item='key' close=')' separator=','>
<if test="value != null && value !=''">
${keys[index]}
</if>
</foreach>
VALUES
(${primaryValue},
<foreach collection='values' item='value' close=')' separator=','>
<if test="value != null && value !=''">
${value}
</if>
</foreach>
ON DUPLICATE KEY UPDATE
<foreach collection='values' item='value' index='index' separator=','>
<if test="value != null && value !=''">
${keys[index]} = #{value}
</if>
</foreach>
</insert>

浙公网安备 33010602011771号