当前位置:首页 > Java技术 > Java存储Map集合到数据库

Java存储Map集合到数据库

2022年11月09日 15:05:48Java技术8

需求分析

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

代码实现

controller
@PostMapping("updateGroup")
public APIResult updateGroup(String kettleId,String kettleRepType, @RequestParam Map<String, Object> params) {

	// 移除参数
	params.remove("extData");
	params.remove("kettleId");
	params.remove("kettleRepType");
	kettleJobService.updateGroup(kettleId,kettleRepType,params);

	return APIResult.createSuccessResult();
}

controller层我是通过接受固定值外,将不固定的变量名和变量值通过一个Map<String,Object>集合来进行接收,
注意 :这里接收集合使用的@RequestParam注解,如果要接收一个对象属性则使用@RequestBody注解进行接收。
举个栗子:

Java存储Map集合到数据库 _ JavaClub全栈架构师技术笔记
这里接收kettleVarSet对象使用的就是@RequestBody注解!
继续,

service

public APIResult updateGroup(String kettleId, String kettleRepType, Map<String, Object> params) {
	Iterator<Map.Entry<String, Object>> it = params.entrySet().iterator();
	while (it.hasNext()) {
		Map.Entry<String, Object> 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集合到数据库 _ JavaClub全栈架构师技术笔记

作者:-Arthur-
来源链接:https://blog.csdn.net/qq_43243541/article/details/91452294

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/java/68824.html

分享给朋友: