Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.
Vista
./src/main/webapp/index.html
<form action="/createPersona">
<input type="text" name="nombre">
<input type="submit" value="Alta">
</form>
Descargar Proyecto
Controlador
com.pablomonteserin.prueba.controller.PersonaController
@Controller // @RestController
public class PersonaController {
@Autowired
private PersonaRepository personaRepository;
@RequestMapping(path = "/createPersona", method = RequestMethod.GET)
public String submit(@ModelAttribute("persona")Persona persona, ModelMap model) throws IOException{
personaRepository.save(persona);
return "redirect:index.html";
}
}
Otros ejemplos de controlador
Recuperando datos sin asociarlos
automáticamente al bean del modelo
@RequestMapping(path = "/createPaciente", method = RequestMethod.GET)
public String createPaciente(@ModelAttribute("nombre")String nombre, @ModelAttribute("apellidos")String apellidos,@ModelAttribute("fecha_alta")String fechaAlta,ModelMap model) {
Paciente paciente = new Paciente();
paciente.setNombre(nombre);
paciente.setApellidos(apellidos);
try {
Date fechaAltaDate=simpleDateFormat.parse(fechaAlta);
paciente.setFecha_alta(fechaAltaDate);
} catch (ParseException e) {
e.printStackTrace();
System.out.println("Algo salió mal");
}
pacienteRepository.save(paciente);
return "redirect:index.html";
}
Yendo a una vista en la que se cargarán los datos
@RequestMapping(path = "/consultaPacientes", method = RequestMethod.GET)
public ModelAndView consultaPacientes(ModelMap model) {
Iterable<Paciente> pacientes = pacienteRepository.findAll();
ModelAndView modelo = new ModelAndView("consulta");
model.addAttribute("pacientes", pacientes);
return modelo;
}
Modelo
com.pablomonteserin.prueba.persistence.repository.PersonaRepository;
public interface PersonaRepository extends CrudRepository<Persona, Integer> {
}
com.pablomonteserin.prueba.config.PruebaConfiguration
(configuración del acceso a la base de datos)
@Configuration
@EnableJpaRepositories(basePackages = "com.pablomonteserin.prueba.persistence.repository")
@EnableTransactionManagement
public class PruebaConfiguration {
@Bean
public PlatformTransactionManager transactionManager(EntityManagerFactory emf) {
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(emf);
return transactionManager;
}
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
LocalContainerEntityManagerFactoryBean em
= new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource());
em.setPackagesToScan("com.pablomonteserin.prueba.persistence.model");
JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
em.setJpaVendorAdapter(vendorAdapter);
em.setJpaProperties(additionalProperties());
return em;
}
@Bean
public DataSource dataSource(){
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/persona?serverTimezone=UTC");
dataSource.setUsername( "pm" );
dataSource.setPassword( "pp" );
return dataSource;
}
private Properties additionalProperties() {
Properties properties = new Properties();
properties.setProperty("hibernate.hbm2ddl.auto", "create");
properties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect");
return properties;
}
}
Aplicación
Este fichero se coloca habitualmente en la raíz del árbol de directorios del proyecto. Este fichero es el que se lanza cuando hacemos run as.
com.pablomonteserin.PruebaApplication
@SpringBootApplication
public class PruebaApplication {
public static void main(String[] args) {
SpringApplication.run(PruebaApplication.class, args);
}
}