需求分析

首先看一张图片:

java 保存word表格信息到数据库 java实现数据保存到数据库_Mybatis


在这里我需要将红线内的内容存储到数据库表中

java 保存word表格信息到数据库 java实现数据保存到数据库_Java_02


这是我的数据库表结构,然后看一下前端请求的头信息:

java 保存word表格信息到数据库 java实现数据保存到数据库_数据_03


从图中可以看到除了上面的数据为固定值,下面的数据(变量名和变量值都是不固定的),这些数据如何存储到表中呢?话不多说直接上代码:

代码实现

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 保存word表格信息到数据库 java实现数据保存到数据库_集合_04


这里接收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 保存word表格信息到数据库 java实现数据保存到数据库_java分批保存数据_05