[JAVA] Je veux INSÉRER l'heure locale du printemps avec l'heure MySQL (également en millisecondes)

Aperçu

11: 12: 13.14``` (heures: minutes: secondes.millisecondes) acquis en tant que type chaîne INSÉRER dans MySQL image.png Et comment afficher jusqu'à la milliseconde. (Aucune information de date requise)

*** N'est-il pas possible de l'implémenter normalement? *** *** Penses-tu

Cela n'a pas fonctionné sans le processus fastidieux qui semblait facile. .. .. Si quelqu'un connaît une manière plus intelligente, je serais très heureux si vous pouviez me le dire! !!

version

Spring

build.gradle


id 'org.springframework.boot' version '2.2.2.BUILD-SNAPSHOT'
sourceCompatibility = '1.8'

	runtimeOnly('mysql:mysql-connector-java')
	implementation 'org.springframework.boot:spring-boot-starter'
	implementation('org.springframework.boot:spring-boot-starter-web')
	implementation('org.springframework.boot:spring-boot-starter-data-jpa')

Base de données

MySQL 8.0

Étape 1 Créez un tableau

Prend en charge jusqu'à 3 chiffres MySQL :: MySQL 5.6 Reference Manual :: 11.1.2 Présentation des types de date et d'heure

create table timesample( 
    ...
    start_time TIME(3)
);

Étape 2 Créer un convertisseur d'attributs

JPA ne prend pas en charge java.time.LocalDate, java.time.LocalTime et java.time.LocalDateTime en tant que types de champ de l'entité, vous devez donc créer le AttributeConverter suivant.

package app.entities.converter;

import java.time.LocalTime;

import javax.persistence.AttributeConverter;
import javax.persistence.Converter;

@Converter(autoApply = true)
public class LocalTimeConverter implements AttributeConverter<LocalTime,  java.sql.Time> {

    @Override
    public java.sql.Time convertToDatabaseColumn(LocalTime time) {
    	return time == null ? null : java.sql.Time.valueOf(time);
    }

    @Override
    public LocalTime convertToEntityAttribute(java.sql.Time  value) {
    	return value == null ? null : value.toLocalTime();
    }
}

Entity


	@Column(name = "start_time")
	private LocalTime startTime;
entity.setStartTime(LocalTime.of(11, 12, 13, 14*10000000));

repository.save(entity);

image.png

Il n'y a pas de milliseconde!

Étape 3 Maintenez 3 millisecondes et convertissez en java.sql.Time

Modifier la méthode convertToDatabaseColumn du LocalTimeConverter créé précédemment [Comment mapper spring-millisecond java.time.LocalTime à millisecond java.sql.Time](https://stackoverflow.com/questions/51182366/how-to-map-java-time-localtime- avec-millisecondes-à-un-temps-sql-java-avec-millisec)

LocalTimeConverter


package app.entities.converter;

import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalTime;

import javax.persistence.AttributeConverter;
import javax.persistence.Converter;

@Converter(autoApply = true)
public class LocalTimeConverter implements AttributeConverter<LocalTime,  java.sql.Time> {

    @Override
    public java.sql.Time convertToDatabaseColumn(LocalTime time) {
    	if(time == null) return null;
    	
    	//Cette date sera supprimée par conversion, donc tout est OK
		long epochMilli = time.atDate(LocalDate.of(2019, 1, 1)).atZone(java.time.ZoneId.systemDefault())
				.toInstant().toEpochMilli();
		java.sql.Time sqlTime = new java.sql.Time(epochMilli);
    	return sqlTime;
    }

    @Override
    public LocalTime convertToEntityAttribute(java.sql.Time  value) {
    	if (value == null) return null;
    	
    	String localTimeStr = new SimpleDateFormat("HH:mm:ss.SSS").format(value);
    	LocalTime localTime = LocalTime.parse(localTimeStr);
    	return localTime;
    }
}

image.png

Recommended Posts

Je veux INSÉRER l'heure locale du printemps avec l'heure MySQL (également en millisecondes)
J'ai essayé de me connecter à MySQL en utilisant le modèle JDBC avec Spring MVC
Je souhaite utiliser DBViewer avec Eclipse 2018-12! !!
Je veux afficher des images avec REST Controller de Java et Spring!
Je veux utiliser java8 forEach avec index
Je veux jouer avec Firestore de Rails
Je voulais classer la botte à ressort dans un multi-projet
Je souhaite effectuer un traitement d'agrégation avec spring-batch
[Rails] Je veux charger du CSS avec webpacker
Paramètres de connexion à MySQL avec Spring Boot + Spring JDBC
J'ai essayé d'implémenter le téléchargement de fichiers avec Spring MVC
J'ai démarré MySQL 5.7 avec docker-compose et j'ai essayé de me connecter
J'ai essayé de démarrer avec Spring Data JPA
Je souhaite utiliser le mode sombre avec l'application SWT
Je souhaite surveiller un fichier spécifique avec WatchService
Je souhaite authentifier les utilisateurs auprès de Rails avec Devise + OmniAuth
Je veux faire des transitions d'écran avec kotlin et java!
Je veux pousser une application créée avec Rails 6 vers GitHub
Je veux faire une liste avec kotlin et java!
Je veux créer une fonction avec kotlin et java!
Jusqu'à INSERT et SELECT sur Postgres avec botte de printemps et feuille de thym
Même en Java, je veux afficher true avec un == 1 && a == 2 && a == 3
Je souhaite envoyer manuellement un e-mail d'autorisation avec Devise
Je veux implémenter diverses fonctions avec kotlin et java!
docker-compose.yml lorsque vous voulez garder mysql en cours d'exécution avec docker
J'ai essayé de démarrer avec Swagger en utilisant Spring Boot
Je veux passer la commande de démarrage à postgres avec docker-compose.
[Java] Je souhaite tester l'entrée standard et la sortie standard avec JUnit
Connectez-vous à MySQL 8 avec Java
[Spring Boot] Je veux ajouter mon propre fichier de propriétés et obtenir la valeur avec env.getProperty ().
Je veux créer un bouton avec un saut de ligne avec link_to [Note]
Je veux connecter un casque SONY WH-1000XM4 avec LDAC avec ubuntu 20.04! !!
Je veux accrocher la génération / ouverture d'un fichier journal avec log4j # FileAppender
Je souhaite ajouter une fonction de navigation avec ruby on rails
Je veux comprendre le flux des paramètres de demande de traitement Spring
Je veux revenir à l'écran précédent avec kotlin et java!
Je veux éviter OutOfMemory lors de la sortie de gros fichiers avec POI
Je voulais faciliter la programmation JavaFX avec Spring Framework
[Java] Je veux effectuer distinctement avec la clé dans l'objet
Je veux contrôler le message d'erreur par défaut de Spring Boot
[Rails] Je souhaite ajouter des données aux paramètres lors de la transition avec link_to
Je souhaite effectuer un traitement asynchrone et une exécution périodique avec Rail !!!
Je veux extraire entre des chaînes de caractères avec une expression régulière
Je suis allé au JJUG CCC 2019 Spring
mysql2 ne s'installe pas avec l'installation du bundle
J'ai essayé d'interagir avec Java
J'ai essayé GraphQL avec Spring Boot
J'ai essayé Flyway avec Spring Boot
Mettre à jour MySQL de 5.7 à 8.0 avec Docker