[JAVA] Ich möchte Spring Local Time mit MySQL Time (auch Millisekunden) einfügen.

Überblick

`` `11: 12: 13.14``` (Stunden: Minuten: Sekunden, Millisekunden) im String-Typ INSERT in MySQL image.png Und wie man bis zu Millisekunden anzeigt. (Keine Datumsangabe erforderlich)

*** Ist es nicht möglich, es normal zu implementieren? *** *** Denkst du

Es funktionierte nur, wenn es einfach schien und eine mühsame Verarbeitung aufwies. .. .. Wenn jemand einen klügeren Weg kennt, würde ich mich sehr freuen, wenn Sie es mir sagen könnten! !!

Ausführung

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')

Datenbank

MySQL 8.0

Schritt 1 Erstellen Sie eine Tabelle

Unterstützt bis zu 3 Stellen MySQL :: MySQL 5.6 Referenzhandbuch :: 11.1.2 Datums- und Uhrzeittypübersicht

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

Schritt 2 Attributkonverter erstellen

JPA unterstützt java.time.LocalDate, java.time.LocalTime und java.time.LocalDateTime nicht als Feldtypen der Entität. Daher müssen Sie den folgenden AttributeConverter erstellen.

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

Es gibt keine Millisekunde!

Schritt 3 Halten Sie 3 Millisekunden gedrückt und konvertieren Sie in java.sql.Time

Ändern Sie die convertToDatabaseColumn-Methode des zuvor erstellten LocalTimeConverter [So ordnen Sie die Frühlings-Millisekunde java.time.LocalTime der Millisekunde java.sql.Time zu](https://stackoverflow.com/questions/51182366/how-to-map-java-time-localtime- mit-Millisekunden-zu-einer-Java-SQL-Zeit-mit-Milisec)

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;
    	
    	//Dieses Datum wird durch Konvertierung verworfen, daher ist alles in Ordnung
		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

Ich möchte Spring Local Time mit MySQL Time (auch Millisekunden) einfügen.
Ich habe versucht, mithilfe von JDBC Template mit Spring MVC eine Verbindung zu MySQL herzustellen
Ich möchte DBViewer mit Eclipse 2018-12 verwenden! !!
Ich möchte Bilder mit REST Controller von Java und Spring anzeigen!
Ich möchte Java8 für jeden mit Index verwenden
Ich möchte mit Firestore von Rails spielen
Ich wollte Spring Boot in einem Multiprojekt gradle
Ich möchte die Aggregationsverarbeitung mit Spring-Batch durchführen
[Rails] Ich möchte CSS mit Webpacker laden
Einstellungen für die Verbindung zu MySQL mit Spring Boot + Spring JDBC
Ich habe versucht, das Hochladen von Dateien mit Spring MVC zu implementieren
Ich habe MySQL 5.7 mit Docker-Compose gestartet und versucht, eine Verbindung herzustellen
Ich habe versucht, mit Spring Data JPA zu beginnen
Ich möchte den Dunkelmodus mit der SWT-App verwenden
Ich möchte eine bestimmte Datei mit WatchService überwachen
Ich möchte Benutzer mit Devise + OmniAuth bei Rails authentifizieren
Ich möchte Bildschirmübergänge mit Kotlin und Java machen!
Ich möchte eine mit Rails 6 erstellte App an GitHub senden
Ich möchte eine Liste mit Kotlin und Java erstellen!
Ich möchte eine Funktion mit Kotlin und Java erstellen!
Bis INSERT und SELECT für Postgres mit Spring Boot und Thymianblatt
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben
Ich möchte manuell eine Autorisierungs-E-Mail mit Devise senden
Ich möchte verschiedene Funktionen mit Kotlin und Java implementieren!
docker-compose.yml, wenn Sie MySQL auf Docker laufen lassen möchten
Ich habe versucht, mit Swagger mit Spring Boot zu beginnen
Ich möchte den Startbefehl mit Docker-Compose an Postgres übergeben.
[Java] Ich möchte Standardeingabe und Standardausgabe mit JUnit testen
Stellen Sie mit Java eine Verbindung zu MySQL 8 her
[Spring Boot] Ich möchte meine eigene Eigenschaftendatei hinzufügen und den Wert mit env.getProperty () abrufen.
Ich möchte mit link_to [Hinweis] eine Schaltfläche mit einem Zeilenumbruch erstellen.
Ich möchte SONY Kopfhörer WH-1000XM4 mit LDAC mit Ubuntu 20.04 verbinden! !!
Ich möchte die Generierung / Öffnung einer Protokolldatei mit log4j # FileAppender verknüpfen
Ich möchte eine Browsing-Funktion mit Ruby on Rails hinzufügen
Ich möchte den Ablauf der Spring-Verarbeitungsanforderungsparameter verstehen
Ich möchte mit Kotlin und Java zum vorherigen Bildschirm zurückkehren!
Ich möchte OutOfMemory bei der Ausgabe großer Dateien mit POI vermeiden
Ich wollte die JavaFX-Programmierung mit dem Spring Framework vereinfachen
[Java] Ich möchte mit dem Schlüssel im Objekt eindeutig arbeiten
Ich möchte die Standardfehlermeldung von Spring Boot steuern
[Rails] Ich möchte beim Übergang mit link_to Daten zu Params hinzufügen
Ich möchte eine asynchrone Verarbeitung und periodische Ausführung mit Rail durchführen !!!
Ich möchte mit einem regulären Ausdruck zwischen Zeichenketten extrahieren
Ich ging zum JJUG CCC 2019 Spring
mysql2 kann mit der Bundle-Installation nicht installiert werden
Ich habe versucht, mit Java zu interagieren
Ich habe GraphQL mit Spring Boot ausprobiert
Ich habe Flyway mit Spring Boot ausprobiert
Aktualisieren Sie MySQL mit Docker von 5.7 auf 8.0