Skip to content

Instantly share code, notes, and snippets.

@rajkumarpb
Created September 19, 2017 14:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rajkumarpb/e8e7b80b417b2cda4c1e0beda567ef29 to your computer and use it in GitHub Desktop.
Save rajkumarpb/e8e7b80b417b2cda4c1e0beda567ef29 to your computer and use it in GitHub Desktop.
Spring JDBC Stored Procedure
**Custom Stored Procedure**
package com.web.helper;
import java.util.List;
import java.util.Map;
import oracle.jdbc.OracleTypes;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.SqlOutParameter;
import org.springframework.jdbc.core.SqlParameter;
import org.springframework.jdbc.object.StoredProcedure;
import com.domain.ViewFormDO;
public class FlexiView extends StoredProcedure {
public FlexiView(JdbcTemplate jdbcTemplate, final String storedProc, ViewFormDO viewFormDO, int reportId){
super(jdbcTemplate, storedProc);
jdbcTemplate.setFetchSize(20000);
declareParameter(new SqlOutParameter("P_CUR", OracleTypes.CURSOR, new FlexiViewMapper(reportId, viewFormDO)));
declareParameter(new SqlParameter("P_AGENT_ID", OracleTypes.NUMBER));
this.compile();
}
@SuppressWarnings("unchecked")
public <T> List<T> executeStoredProc(final Map<String, Object> valueMap) {
System.out.println(">>"+valueMap.size());
// execute stored procedure
Map<String, Object> resultMap = super.execute(valueMap);
return (List<T>)resultMap.get("P_CUR");
}
}
**Custom Row Mapper**
package com.web.helper;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import org.springframework.jdbc.core.RowMapper;
import com.domain.ViewFormDO;
import com.domain.ViewFormGridDO;
public class FlexiViewMapper implements RowMapper<Object> {
int reportId = 0;
final SimpleDateFormat dtFormat = new SimpleDateFormat("dd-MM-yyyy");
ViewFormDO viewFormDO;
public FlexiViewMapper(int reportId, ViewFormDO viewFormDO){
this.reportId = reportId;
this.viewFormDO = viewFormDO;
}
@Override
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
ViewFormGridDO flexiActiveGridDet = new ViewFormGridDO();
if (reportId == 1001 || reportId == 1002) {
// Get data from DB and assign it in ViewFormGridDO Bean
}
return flexiActiveGridDet;
}
}
**Calling the method in Service**
@Override
public List<ViewFormGridDO> getFlexiGuideEnqGridDet1(final ViewFormDO viewFormDO)
throws NsureException {
List<ViewFormGridDO> flexiGuideGridDetails = null;
final int reportId = viewFormDO.getFlexiTypeId() == GlobalNames.SCHEME_XXX ? 1002 : viewFormDO.getReportId();
LinkedHashMap<String, Object> valueMap = new LinkedHashMap<String, Object>();
valueMap.put("P_AGENT_ID", viewFormDO.getAgentId());
FlexiView flexiView = new FlexiView(jdbcTemplate, "PKG_XXXXX.prGetXXXXX", viewFormDO, reportId);
flexiGridDetails = flexiView.executeStoredProc(valueMap);
return flexiGridDetails;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment