使用Executor服务和Callable接口使用NamedJdbctemplate

时间:2019-02-01 05:23:20

标签: java future jdbctemplate callable

我的步骤:

  1. 我正在使用namedJDBCtemplate从表中选择记录。
  2. 使用可调用接口和Java executor服务,我正在尝试使用namedJDBCtemplate更新并在更多表中插入。

错误:每个参数都已设置,但是执行更新/插入查询时出现异常。异常代码为空

SQL Exception while Updating database sql Message  UpdatePlanStat()--> null

提交可调用类以更新数据库的第一个类。此类首先调用DAOimpl从数据库中选择数据,一旦获得完整的列表,它将遍历整个列表并使用执行程序服务为每行执行调用方法以更新/插入数据库。

有关插入和更新查询的所有信息均已正确填充,但未更新数据库。我在这里想念东西吗?

public class GetIDStatus  {

@Autowired 
PDao pdao;

public void getData() throws InterruptedException, ExecutionException {


        try
        {
        pid = pdao.findall();
        for (Pid pidx : pid) {
            setPHist(pidx);   // Setting the object
            setPid(pidx);        
            PDao pdaou = new PDao(pidx, pidxh);   //passing constructor
            Future<String> processid = executorService.submit(pdaou);
            updstatlist.add(processid);
        }
        validateExecutor();
        }
        catch (SQLException e) 
        {
            logger.info("SQL Exception while select" + e.getMessage());
        }       
    }

    public void validateExecutor() throws InterruptedException, ExecutionException
    {
        for(Future<String> fut :updstatlist)
        {
            if (fut.get().equals("Sucess"))
            {
                updcnt = updcnt + 1;
                staleplanibcprocess.setPostreccount(updcnt);
            } else 
            {
                updcnt = updcnt + 1;
                staleplanibcprocess.setPostreccount(updcnt);
                fileprocessor.writeReprocessFile(fut.get());
            }               

        }
        executorService.shutdown();
    }
}







@Repository
public class PDao  implements IDDao,PIDHistDao, Callable <String>{

@Autowired
Pidxh pidxh;

@Autowired
Pidx pidx;


private final String UPDATE_SQL= "";


private final String INSERT_HIST = "";

@Autowired
    private NamedParameterJdbcTemplate namedJdbcTemplate;

    public PDao(Pidx pidx, Pidxh pidxh) {
        super();
        this.pidx = pidx;
        this.pidxh = pidxh;
    }

@Override
    public String call() throws Exception {
        // TODO Auto-generated method stub
            update();
        if (getPlngrpst().equals("Sucess"))
        {
            insert();
        }

        return getPlngrpst();
    }

public String update() throws SQLException, RuntimeException {

        try {
         SqlParameterSource namedParametersupdate = new MapSqlParameterSource().addValue(":")
                                                                               .addValue(";"))
                                                                               .addValue(";")
                                                                               .addValue("'");

         this.namedJdbcTemplate.update(UPDATE_SQL,namedParametersupdate);

         logger.info("------------> after update");
         setPlngrpst("Sucess");
        }       
        catch (RuntimeException r)
        {
            setPlngrpst(";");
        }   
         return getPlngrpst();          
    }

0 个答案:

没有答案