首先看一张图片:
在这里我需要将红线内的内容存储到数据库表中
这是我的数据库表结构,然后看一下前端请求的头信息:
从图中可以看到除了上面的数据为固定值,下面的数据(变量名和变量值都是不固定的),这些数据如何存储到表中呢?话不多说直接上代码:
@PostMapping("updateGroup")
public APIResult updateGroup(String kettleId,String kettleRepType, @RequestParam Map params) {
// 移除参数
params.remove("extData");
params.remove("kettleId");
params.remove("kettleRepType");
kettleJobService.updateGroup(kettleId,kettleRepType,params);
return APIResult.createSuccessResult();
}
controller层我是通过接受固定值外,将不固定的变量名和变量值通过一个Map
注意 :这里接收集合使用的@RequestParam注解,如果要接收一个对象属性则使用@RequestBody注解进行接收。
举个栗子:
这里接收kettleVarSet对象使用的就是@RequestBody注解!
继续,
public APIResult updateGroup(String kettleId, String kettleRepType, Map
Iterator> it = params.entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry = it.next();
String variableName = entry.getKey();
String variableValue = (String) entry.getValue();
// 设置id
String id = UUID.randomUUID().toString().replace("-", "");
// 判断当前变量是否为空
if(!StringUtil.isEmpty(variableName) && !StringUtil.isEmpty(variableValue)){
kettleGroupDao.deleteGroupByVariableName(kettleId,variableName);
kettleGroupDao.updateGroup(id,kettleId,kettleRepType,variableName,variableValue);
} else {
return APIResult.createSuccessResult();
}
}
return APIResult.createSuccessResult();
}
在这里我直接将param集合进行遍历分别取出key和value值!然后调用dao层方法
public class KettleGroupDao {
@Autowired
BaseDao baseDao;
/**
* 插入作业组变量
*/
public void updateGroup(String id, String kettleId, String kettleRepType, String variableName, String variableValue) {
getMapper().updateGroup(id,kettleId,kettleRepType,variableName,variableValue);
}
/**
* 条件删除作业组变量
* @param variableName
*/
public void deleteGroupByVariableName(String kettleId,String variableName) {
getMapper().deleteGroupByVariableName(kettleId,variableName);
}
/**
* 获取资源库变量相关的mapper
*
* @return
*/
private KettleGroupMapper getMapper() {
return baseDao.getMapper(KettleGroupMapper.class);
}
}
public interface KettleGroupMapper {
/**
* 插入作业组变量
*/
@Insert({"insert into dsep_group_variables (ID,GROUP_NAME,KETTLE_REP_TYPE,VARIABLE_NAME,VARIABLE_VALUE) " +
"VALUES (#{id}, #{kettleId}, #{kettleRepType}, #{variableName}, #{variableValue} )"})
public void updateGroup(@Param("id") String id, @Param("kettleId") String kettleId,@Param("kettleRepType") String kettleRepType,@Param("variableName") String variableName,@Param("variableValue") String variableValue);
/**
* 条件删除作业组变量
*/
@Delete({"delete FROM DSEP_GROUP_VARIABLES where GROUP_NAME = #{kettleId} AND VARIABLE_NAME = #{variableName}"})
void deleteGroupByVariableName( @Param("kettleId") String kettleId,@Param("variableName") String variableName);
}
我用的是注解的方式进行的增删操作,当前也可以写在xml文件中,使用注解时尽量注意方法中的参数顺序要和注解的条件顺序一致!