moonorongo
1/29/2015 - 5:16 PM

Utilizar JdbcTemplate

Utilizar JdbcTemplate

/*
mas detalle
http://wetfeetblog.businesswebsitemanual.com/spring-jdbc-template-leaner-alternative-fat-hibernate/328
*/

private jdbcTemplate; // se inyecta desde Spring
private txTemplate; // idem

// obtener un solo registro --------------------------------------------------------
	public InscripcionCursoData getCurso(int CODIGO) {
		MapSqlParameterSource params = new MapSqlParameterSource();
		params.addValue("CODIGO", CODIGO);
		return jdbcTemplate.queryForObject(sqlGetCurso, params, new MapperCursos());
	} 
	
	// mapeador getCurso()
		private static final class MapperCursos implements RowMapper<InscripcionCursoData> {
		public InscripcionCursoData mapRow(ResultSet sqlRs, int rowNum) throws SQLException {
			InscripcionCursoData m = new InscripcionCursoData();
			m.CODIGO = sqlRs.getInt("CODIGO");
		
			m.CODCURSO = sqlRs.getInt("CODCURSO"); // getInt retorna int
			if(sqlRs.wasNull()) m.CODCURSO = null; // si fue null le asigno null
		
			return m;
		}
	}	
	
		// obtener una lista de registros -----------------------------------------------------
		public List<ComboData> listProfesoresFiltered(int CODMATERIA, int CODINSTRUMENTO) {
		MapSqlParameterSource paramSource = new MapSqlParameterSource();
		paramSource.addValue("CODMATERIA", CODMATERIA, Types.INTEGER);
		paramSource.addValue("CODINSTRUMENTO", CODINSTRUMENTO, Types.INTEGER);
		return jdbcTemplate.query(sqlListProfesoresFiltered, paramSource, new MapperCombo());		
	}
	
	// el Mapper se utiliza similar... puede servir para obtener 1 o varios registros.
	
	
	/*
	mas detalle: http://simplespringtutorial.com/springProgrammaticTransactions.html
	*/
	// actualizar dentro de una transaccion
		public int updateExamen(final InscripcionExamenData m) {
		m.CODIGO = getId();		
		
		return	txTemplate.execute(new TransactionCallback<Integer>() {
			  public Integer doInTransaction(TransactionStatus paramTransactionStatus) {
		          MapSqlParameterSource paramSource = new MapSqlParameterSource();
				  paramSource.addValue("CODIGO", m.CODIGO, Types.INTEGER);
				  paramSource.addValue("CODPERIODO", m.CODPERIODO);
				  paramSource.addValue("CODALUMNO", m.CODALUMNO);

				  try {
						  int resultado = jdbcTemplate.update(sqlInsertInscripcion,paramSource);
				  } catch (DataAccessException e) {
					  log.error("ERROR Inscripciones.updateExamen()", e);
				  } 
				  
				  return null; // aca se puede retornar el valor de resultado
			   }
			 }); // return		
	} // create