Dans MySQL 8.0
Il peut également être utilisé comme base de données de documents (magasin de documents) en utilisant, j'ai donc essayé d'utiliser MySQL Connector / J dans un environnement Java (8), même s'il était tard.
【référence】
Installez ce qui suit sur la même machine (un PC Windows ou une machine virtuelle Linux est OK).
Ensuite, enregistrez un utilisateur de test sur le serveur MySQL (Communauté) (OK depuis la ligne de commande ou depuis MySQL Workbench).
--L'utilisateur est testuser @ localhost
T35_U53r
--Sélectionner, insérer, mettre à jour, supprimer des privilègescaching_sha2_password
ou mysql_native_password
Enfin, créez un DB (schéma) test_db
avec CREATE DATABASE
etc. et vous êtes prêt à partir.
↓ est un code de test pour le traitement simple des documents.
Code de test
package site.hmatsu47.DocDbTest;
import java.util.List;
import com.mysql.cj.xdevapi.Collection;
import com.mysql.cj.xdevapi.DbDoc;
import com.mysql.cj.xdevapi.DocResult;
import com.mysql.cj.xdevapi.Schema;
import com.mysql.cj.xdevapi.Session;
import com.mysql.cj.xdevapi.SessionFactory;
public class Main {
public static void main(String args[]) {
//Connecter au serveur
Session session = new SessionFactory().getSession("mysqlx://localhost:33060/test_db?user=testuser&password=T35_U53r");
//Connectez-vous à DB
Schema db = session.getSchema("test_db");
//collection'test_collection'Créer
Collection col = db.createCollection("test_collection", true);
//Ajouter un document à la collection
col.add("{\"id\":1, \"name\":\"Sakuraba\", \"Program\":\"Java Champion\"}")
.execute();
col.add("{\"id\":2, \"name\":\"bien\", \"Program\":\"Oracle ACE\"}")
.execute();
col.add("{\"id\":3, \"name\":\"Sero\", \"Program\":[\"Java Champion\",\"Oracle Groundbreaker Ambassador\"]}")
.execute();
col.add("{\"id\":4, \"name\":\"Tomita\", \"Program\":\"Oracle ACE Associate\"}")
.execute();
col.add("{\"id\":5, \"name\":\"Mitani\", \"Program\":\"Oracle ACE\"}")
.execute();
//Cela n'a rien à voir avec le sujet principal, mais je ne trouve pas Jukucho dans la base de données d'Oracle ACE, Groundbreaker et Java Champion ...
//Ajouter un index à la colonne "id" de la collection
col.createIndex("id_index", "{\"fields\": [{\"field\": \"$.id\", \"type\": \"INT\"}]}");
//De la collection "Programme LIKE'%Oracle%'Rechercher et afficher
searchProgram(col, "Oracle");
System.out.println();
//De la collection "Programme LIKE'%Java%'Rechercher et afficher
searchProgram(col, "Java");
System.out.println();
//De la collection "id=2 "et affichage
searchId(col, 2);
System.out.println();
//De la collection "id=4 "et affichage
searchId(col, 4);
//Supprimer la collection
db.dropCollection("test_collection");
}
//Recherchez "Programme" du document cible dans la collection et affichez-le
private static void searchProgram(Collection col, String keyword) {
System.out.println("Search: " + keyword);
DocResult docs = col.find("Program like :program")
.bind("program", "%" + keyword + "%").execute();
//Obtenir et afficher les résultats
List<DbDoc> docl = docs.fetchAll();
docl.forEach(doc -> System.out.println(doc.toFormattedString()));
}
//Rechercher et afficher numériquement l '"id" du document cible de la collection
private static void searchId(Collection col, long value) {
System.out.println("Search: " + value);
DocResult docs = col.find("id = :id")
.bind("id", value).execute();
//Obtenir et afficher les résultats
System.out.println(docs.fetchOne().toFormattedString());
}
}
Utilisez new SessionFactory (). GetSession ()
pour vous connecter au serveur de base de données avec ʻURL comme argument, et utilisez
session.getSchema (); `pour spécifier le nom du schéma (DB) comme argument pour se connecter à la base de données. Je suis.
Comme son nom l'indique, ʻURL est ʻURL
, donc si vous utilisez un symbole dans votre mot de passe, veuillez l'échapper de manière appropriée (j'ai fait une erreur et je me suis inquiété pendant une heure).
Puis dans l'ordre
--Créez une nouvelle collection de documents (si le même nom existe déjà, utilisez-le tel quel) --Ajouter des documents à la collection de documents (5 lignes au total) --Indexage
LIKE
Je fais.
Comme vous pouvez le voir, la recherche de chaîne LIKE
trouve qu'un document recherche correctement même s'il a plusieurs éléments avec le même nom.
En regardant la conception de la table pendant l'exécution, cela ressemble à ceci (SHOW CREATE TABLE test_db.test_collection;
)
test_conception de table de collection
CREATE TABLE `test_collection` (
`doc` json DEFAULT NULL,
`_id` varbinary(32) GENERATED ALWAYS AS (json_unquote(json_extract(`doc`,_utf8mb4'$._id'))) STORED NOT NULL,
`$ix_i_C6EF652A87142734264FBA60F41C59108CF4D8CA` int(11) GENERATED ALWAYS AS (json_extract(`doc`,_utf8mb4'$.id')) VIRTUAL,
PRIMARY KEY (`_id`),
KEY `id_index` (`$ix_i_C6EF652A87142734264FBA60F41C59108CF4D8CA`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
De plus, le résultat de l'exécution sera comme ceci.
Résultat d'exécution
Search: Oracle
{
"Program" : "Oracle ACE",
"_id" : "00005c8ded80000000000000006b",
"id" : 2,
"name" : "bien"
}
{
"Program" : ["Java Champion", "Oracle Groundbreaker Ambassador"],
"_id" : "00005c8ded80000000000000006c",
"id" : 3,
"name" : "Sero"
}
{
"Program" : "Oracle ACE Associate",
"_id" : "00005c8ded80000000000000006d",
"id" : 4,
"name" : "Tomita"
}
{
"Program" : "Oracle ACE",
"_id" : "00005c8ded80000000000000006e",
"id" : 5,
"name" : "Mitani"
}
Search: Java
{
"Program" : "Java Champion",
"_id" : "00005c8ded80000000000000006a",
"id" : 1,
"name" : "Sakuraba"
}
{
"Program" : ["Java Champion", "Oracle Groundbreaker Ambassador"],
"_id" : "00005c8ded80000000000000006c",
"id" : 3,
"name" : "Sero"
}
Search: 2
{
"Program" : "Oracle ACE",
"_id" : "00005c8ded80000000000000006b",
"id" : 2,
"name" : "bien"
}
Search: 4
{
"Program" : "Oracle ACE Associate",
"_id" : "00005c8ded80000000000000006d",
"id" : 4,
"name" : "Tomita"
}
Autre X DevAPI
--Traitement asynchrone --Opérations telles que CRUD pour les schémas de bases de données relationnelles --Transaction en cours
Il existe plusieurs fonctions telles que.