Created
September 19, 2017 14:13
-
-
Save rajkumarpb/e8e7b80b417b2cda4c1e0beda567ef29 to your computer and use it in GitHub Desktop.
Spring JDBC Stored Procedure
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
**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