Java存储Map集合到数据库

需求分析

首先看一张图片:
Java存储Map集合到数据库_第1张图片
在这里我需要将红线内的内容存储到数据库表中
Java存储Map集合到数据库_第2张图片
这是我的数据库表结构,然后看一下前端请求的头信息:
Java存储Map集合到数据库_第3张图片
从图中可以看到除了上面的数据为固定值,下面的数据(变量名和变量值都是不固定的),这些数据如何存储到表中呢?话不多说直接上代码:

代码实现

controller
@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注解进行接收。
举个栗子:

Java存储Map集合到数据库_第4张图片
这里接收kettleVarSet对象使用的就是@RequestBody注解!
继续,

service

public APIResult updateGroup(String kettleId, String kettleRepType, Map params) {

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层方法

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);
    }
}

mapper

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文件中,使用注解时尽量注意方法中的参数顺序要和注解的条件顺序一致!

然后运行项目执行方法,就实现了map集合的是数据库存储!
Java存储Map集合到数据库_第5张图片

你可能感兴趣的:(Java基础)