Heim  >  Artikel  >  Datenbank  >  MySQL – So stellen Sie mehrschichtiges verschachteltes JSON aus aus der Datenbank gelesenen Daten zusammen

MySQL – So stellen Sie mehrschichtiges verschachteltes JSON aus aus der Datenbank gelesenen Daten zusammen

WBOY
WBOYOriginal
2016-08-20 08:47:584065Durchsuche

MySQLJSON-Algorithmus Datenstruktur Java

Die Datenbankfelder sind wie in der Abbildung gezeigt

Drei Primärschlüssel Tag, Stunde, Geschäft, was bedeutet, dass Sie die Details eines Geschäfts unter herausfinden können Eine bestimmte Stunde an einem bestimmten Tag durch Drücken von Verkaufsstatus,
Tag, Stunde und Filialdaten können wiederholt werden, aber die aus den drei Feldern zusammengesetzten Daten sind eindeutig.
Erforderlich für die Verwendung von Java MySQL JDBC (andere Datenbankverbindungstechnologien sind ebenfalls akzeptabel), aber die Sprache muss Java sein.
Wie lese ich die Datenbank, um JSON im folgenden Format zu bilden?
Ich verwende selbst JDBC und verwende dann mehrschichtige While-Schleifen, um dieses Format zu bilden, aber es ist sehr ineffizient. Wenn die Datenmenge groß ist, wird sie sehr langsam sein

Auf der Suche nach einer effizienten Lösung

Mehrstufiges verschachteltes Format
{
2016-07-16:
{
1:
[
nike:{
sales_count:1000
profit:200
s. ales_value:10000
                                                                                                                                                                                                                                            {

 sales_count:1001
Gewinn: 201
Sales_Value: 10001
}
> nike: {
Sales_count: 1002
Gewinn: 203
Sales_Value: 10004

adidas: profit:206
sales_value:10007
}
]
...
 
 
2016-07-17:
{
1:
[
nike: {
Sales_count: 1008
Gewinn: 208
Sales_Value: 10008
🎜>
nike: {
sales_count: 2002
Gewinn: 204
sales_value:20004


} >}







Antwortinhalt:

Konvertieren Sie die aus der Datenbank abgerufenen Daten in Objekte und konvertieren Sie die Objekte dann mit gson direkt in JSON-Strings!

Nachdem Ihre SQL-Anweisung geschrieben wurde, ist alles, was Sie brauchen, ein großer Durchlauf des Datensatzes und zwei darin enthaltene Beurteilungsprozesse. Hast du nicht gesagt, dass es geschrieben wurde? Veröffentlichen Sie es und lassen Sie es ändern.

Und wie groß ist diese Menge? Wenn Sie ein Volumen von mehreren M oder sogar mehreren Dutzend oder Hunderten von M erstellen, ist die Übertragung allein langsam genug.

Hier liegt ein Problem vor, das heißt, der Schlüssel der Verkaufsdaten ist der Filialname, der nicht festgelegt ist, sodass die Implementierung sehr kompliziert sein wird.
Es wird empfohlen, eine geringfügige Änderung vorzunehmen. Dadurch wird die Komplexität erheblich verringert und das Sub-Array-Format im Inneren geändert in:
[
{
Geschäft: nike
sales_count:2002
Gewinn:204
sales_value:20004
},
{
sales_count:1505
Gewinn:216
sales_value:10077
},
...
]

Dann können Sie JavaBean so entwerfen, dass es Daten wie diese empfängt, und es dann mit dem Tool Object in jsonString konvertieren

Klassenergebnis {
Liste ts;
}

Klasse T {
String-Tag;
int Stunde;
Geschäfte auflisten;

}

class Store {

String-Store;MySQL – So stellen Sie mehrschichtiges verschachteltes JSON aus aus der Datenbank gelesenen Daten zusammen int sales_count;

int profit;
int sales_value; }

Für SQL-Abfragen wird empfohlen, keine großen SQL-Abfragen zu verwenden, da zu viele Unterabfragen die Effizienz großer SQL-Abfragen exponentiell verlangsamen. Verwenden Sie eine Java-Schleife, um einfaches SQL auszuführen.

1. Der erste Schritt besteht darin, die Basisdaten der ersten Ebene abzufragen und List(T):

zu erhalten Wählen Sie einen bestimmten Tag und eine bestimmte Stunde aus der Tabelle aus;

  1. Der zweite Schritt besteht darin, List(T) zu durchlaufen und die Geschäftsinformationen in einer Schleife nach Tag + Stunde einzugeben: Wählen Sie Geschäft, Umsatzanzahl, Gewinn und Umsatzwert aus T aus, wobei Tag = ? und Stunde =?;

Die Logik ist klar und die Struktur ist nicht kompliziert, nur zwei Schichten.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn