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>

  

posted @ 2020-11-26 14:35  杨葱头  阅读(351)  评论(0)    收藏  举报