spring-boot
Spring-Boot + JDBC
Buscar..
Introducción
Spring Boot se puede utilizar para crear y conservar una base de datos relacional de SQL. Puede elegir conectarse a un H2 en la base de datos de memoria usando Spring Boot, o tal vez optar por conectarse a la base de datos MySql, es completamente su elección. Si desea realizar operaciones CRUD contra su base de datos, puede hacerlo utilizando el bean JdbcTemplate, este bean se proporcionará automáticamente mediante Spring Boot. Spring Boot le ayudará proporcionando la configuración automática de algunos beans de uso común relacionados con JDBC.
Observaciones
Para comenzar, en su eclipse de pts vaya a nuevo -> Spring Starter Project -> complete sus coordenadas de Maven -> y agregue las siguientes dependencias:
En la pestaña SQL -> agregar JDBC + agregar MySql (si MySql es su elección).
Para Mysql, también deberá agregar el MySql Java Connector.
En su archivo de aplicaciones Spring Boot application.properties (su archivo de configuración Spring Boot) necesitará configurar sus credenciales de fuente de datos para MySql DB:
- spring.datasource.url
- spring.datasource.username
- spring.datasource.password
- spring.datasource.driver-class-name
por ejemplo:
spring.datasource.url=jdbc:mysql://localhost/test
spring.datasource.username=dbuser
spring.datasource.password=dbpass
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
Debajo de la carpeta de recursos agregue los siguientes dos archivos:
schema.sql -> cada vez que ejecute su aplicación Spring Boot ejecutará este archivo, dentro de este se supone que debe escribir su esquema de base de datos, definir tablas y sus relaciones.
data.sql -> cada vez que ejecute su aplicación Spring Boot ejecutará este archivo, dentro de él, se supone que debe escribir datos que se insertarán en su tabla como una inicialización inicial.
Spring Boot te proporcionará el bean JdbcTemplate automáticamente para que puedas usarlo instantáneamente de esta manera:
@Autowired
private JdbcTemplate template;
Sin ninguna otra configuración.
archivo schema.sql
CREATE SCHEMA IF NOT EXISTS `backgammon`;
USE `backgammon`;
DROP TABLE IF EXISTS `user_in_game_room`;
DROP TABLE IF EXISTS `game_users`;
DROP TABLE IF EXISTS `user_in_game_room`;
CREATE TABLE `game_users`
(
`user_id` BIGINT NOT NULL AUTO_INCREMENT,
`first_name` VARCHAR(255) NOT NULL,
`last_name` VARCHAR(255) NOT NULL,
`email` VARCHAR(255) NOT NULL UNIQUE,
`user_name` VARCHAR(255) NOT NULL UNIQUE,
`password` VARCHAR(255) NOT NULL,
`role` VARCHAR(255) NOT NULL,
`last_updated_date` DATETIME NOT NULL,
`last_updated_by` BIGINT NOT NULL,
`created_date` DATETIME NOT NULL,
`created_by` BIGINT NOT NULL,
PRIMARY KEY(`user_id`)
);
DROP TABLE IF EXISTS `game_rooms`;
CREATE TABLE `game_rooms`
(
`game_room_id` BIGINT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
`private` BIT(1) NOT NULL,
`white` BIGINT DEFAULT NULL,
`black` BIGINT DEFAULT NULL,
`opened_by` BIGINT NOT NULL,
`speed` BIT(3) NOT NULL,
`last_updated_date` DATETIME NOT NULL,
`last_updated_by` BIGINT NOT NULL,
`created_date` DATETIME NOT NULL,
`created_by` BIGINT NOT NULL,
`token` VARCHAR(255) AS (SHA1(CONCAT(`name`, "This is a qwe secret 123", `created_by`, `created_date`))),
PRIMARY KEY(`game_room_id`)
);
CREATE TABLE `user_in_game_room`
(
`user_id` BIGINT NOT NULL,
`game_room_id` BIGINT NOT NULL,
`last_updated_date` DATETIME NOT NULL,
`last_updated_by` BIGINT NOT NULL,
`created_date` DATETIME NOT NULL,
`created_by` BIGINT NOT NULL,
PRIMARY KEY(`user_id`, `game_room_id`),
FOREIGN KEY (`user_id`) REFERENCES `game_users`(`user_id`),
FOREIGN KEY (`game_room_id`) REFERENCES `game_rooms`(`game_room_id`)
);
Primera aplicación de arranque JdbcTemplate
@SpringBootApplication
@RestController
public class SpringBootJdbcApplication {
@Autowired
private JdbcTemplate template;
@RequestMapping("/cars")
public List<Map<String,Object>> stocks(){
return template.queryForList("select * from car");
}
public static void main(String[] args) {
SpringApplication.run(SpringBootJdbcApplication.class, args);
}
}
data.sql
insert into game_users values(..., ..., ..., ...);
insert into game_users values(..., ..., ..., ...);
insert into game_users values(..., ..., ..., ...);