2

// 入力パラメータを設定

Map<String,Object> inParams = new HashMap<String,Object>();
inParams.put("Sig",resourceHistoryBean.getId());

List<ResourceHistoryBean> resourceHistoryList= new ArrayList<ResourceHistoryBean>();

// ストアド プロシージャを定義する

try{        
    SimpleJdbcCall readResult = new SimpleJdbcCall(getDataSource())
            .useInParameterNames("Sig")
            .declareParameters(new SqlParameter("Sig", Types.VARCHAR))
            .withProcedureName("SP_ResourceAllocationDtls")
            .withSchemaName("hrms")
            .returningResultSet("ResourceHistory", new ParameterizedRowMapper<ResourceHistoryBean>() {
                public ResourceHistoryBean mapRow(ResultSet rs, int rowNum)
                        throws SQLException {
                    ResourceHistoryBean bean = new ResourceHistoryBean();
                    resourceHistoryBean.setProjectName(rs.getString(RH_PROJECT_NAME));
                    return bean;
                }
            });
    readResult.compile();

// ストアド プロシージャを実行します

Map<String, Object> out = readResult.execute(inParams);
resourceHistoryList = (List<ResourceHistoryBean>) out.get("ResourceHistory");
4

1 に答える 1

1

上記の問題に対する代替解決策を見つけることができたようです(ストアドプロシージャにパラメータを渡し、マッピングクラスも使用します):

public List<ResourceHistoryBean> getResourceHistory(final ResourceHistoryBean resourceHistoryBean)throws Exception{

    try {
        // call stored procedure and pass parameter to it
        List resourceHistoryList = getJdbcTemplate().query(
                "call hrms.SP_ResourceAllocationDtls(?)",
                new Object[] {resourceHistoryBean.getId()}, new HistoryMapper());
        return resourceHistoryList;
    } catch (Exception e) {
        throw e;
    } finally {
        closeTemplate();

    }

}

// マッパークラス

class HistoryMapper implements RowMapper, IDatabaseConstants {

public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
    ResourceHistoryBean resourceHistoryBean = new ResourceHistoryBean();
    resourceHistoryBean.setProjectName(rs.getString(RH_PROJECT_NAME));
    return resourceHistoryBean;
}
}
于 2012-04-24T06:31:31.363 に答える