IDEA-vollständiger Code zum Herstellen einer Verbindung mit einer MySQL-Datenbank und Durchführen von Abfragevorgängen

IDEA-vollständiger Code zum Herstellen einer Verbindung mit einer MySQL-Datenbank und Durchführen von Abfragevorgängen

1. Schreiben Sie zuerst eine Mysql-Link-Einstellungsseite

Paket com.wretchant.fredis.menu.mysql;

importiere com.intellij.notification.NotificationType;
importiere com.intellij.openapi.actionSystem.AnAction;
importiere com.intellij.openapi.actionSystem.AnActionEvent;
importiere com.wretchant.fredis.gui.dialog.TableDialog;
importiere com.wretchant.fredis.util.NotifyUtils;
importiere com.wretchant.fredis.util.PropertiesUtils;
importiere org.jetbrains.annotations.NotNull;

importiere javax.swing.*;
importiere java.util.Map;
importiere java.util.Properties;

/**
 * @author Erstellt von Tan Jian am 26.08.2020. Mittwoch. 15:24.
 * © Alle Rechte vorbehalten.
 */
öffentliche Klasse MysqlConfig erweitert AnAction {

    @Überschreiben
    öffentliche void actionPerformed(@NotNull AnActionEvent event) {

        Eigenschafteneigenschaften = PropertiesUtils.readFromSystem();
        if (Eigenschaften != null) {
            TableDialog.TableField erstellen = TableDialog.TableField.build(properties.stringPropertyNames());
            TableDialog-Dialog = neuer TableDialog("Mysql-Verbindungskonfiguration", Build);
            für (int i = 0; i < dialog.getLabels().size(); i++) {
                JLabel-Beschriftung = dialog.getLabels().get(i);
                JTextField textField = dialog.getInputs().get(i);
                Zeichenfolgeneigenschaft = Eigenschaften.getProperty(label.getText());
                textField.setText(Eigenschaft);
            }
            dialog.anzeigen();
            wenn (dialog.istOK()) {
                Map<String, String> valueMap = dialog.getValueMap();
                valueMap.fürEach(Eigenschaften::festlegen der Eigenschaft);
                PropertiesUtils.write2System(Eigenschaften);
            }
        } anders {
            NotifyUtils.notifyUser(event.getProject(), "Konfigurationsdatei konnte nicht gelesen werden, Konfigurationsdatei existiert nicht", NotificationType.ERROR);
        }
    }

} 

2. Dann schreiben Sie einfach eine JDBC-Support-Klasse für den Betrieb der Datenbank

Paket com.wretchant.fredis.support;

importiere cn.hutool.core.util.StrUtil;
importiere com.intellij.notification.NotificationType;
importiere com.intellij.openapi.actionSystem.AnActionEvent;
importiere com.intellij.openapi.actionSystem.PlatformDataKeys;
importiere com.intellij.openapi.editor.SelectionModel;
importiere com.wretchant.fredis.util.ClipboardUtils;
importiere com.wretchant.fredis.util.NotifyUtils;
importiere com.wretchant.fredis.util.PropertiesUtils;
importiere com.wretchant.fredis.value.StringValue;
importiere org.apache.commons.lang.StringUtils;
importiere org.jetbrains.annotations.NotNull;

importiere java.sql.*;
importiere java.util.*;

/**
 * @author Erstellt von Tan Jian am 12.08.2020. Mittwoch. 17:42.
 * © Alle Rechte vorbehalten.
 */
öffentliche Klasse Mysql {


    /**
     * Führen Sie die Abfrageanweisung aus, um das Ergebnis zurückzugeben */
    öffentliche statische Klasse Rs {

        öffentliche Rs(Liste<Map<String, Objekt>> r) {
            dies.r = r;
            dies.Anzahl = r.Größe();
        }

        private Liste<Map<String, Objekt>> r = neue ArrayList<>();

        private int-Anzahl;

        öffentliche Liste<Map<String, Objekt>> getR() {
            Rückkehr r;
        }

        public void setR(Liste<Map<Zeichenfolge, Objekt>> r) {
            dies.r = r;
        }

        öffentliche int getCount() {
            Anzahl zurückgeben;
        }

        öffentliche void setCount(int Anzahl) {
            dies.Anzahl = Anzahl;
        }

        öffentliche Map<String, Objekt> eins() {
            wenn (Objects.isNull(r) || r.isEmpty()) {
                gibt null zurück;
            }
            r.get(0) zurückgeben;
        }


        öffentliches Objekt oneGet(String key) {
            gib eins zurück().get(Schlüssel);
        }
    }


    // Referenz: https://www.cnblogs.com/jyroy/p/9637149.html

    öffentliche statische Klasse JDBCUtil {


        /**
         * SQL ausführen und Kartendaten zurückgeben *
         * @param sql
         * @zurückkehren
         */
        öffentliche statische Rs rs(String sql) {
            Verbindung Verbindung = null;
            Anweisung Anweisung = null;
            Ergebnismenge Ergebnismenge = null;
            Liste<Map<String, Objekt>> r = neue ArrayList<>();
            versuchen {
                Verbindung = Mysql.DatabaseUtils.getConnection();
                Anweisung = Verbindung.createStatement();
                Ergebnismenge = Anweisung.executeQuery(sql);

                // Grundlegende Informationen ResultSetMetaData metaData = resultSet.getMetaData();
                // Wie viele Felder werden zurückgegeben int columnCount = metaData.getColumnCount();


                während (resultSet.next()) {
                    Map<String, Objekt> valueMap = neue LinkedHashMap<>();
                    für (int i = 0; i < Spaltenanzahl; i++) {
                        // Welcher Datentyp ist dieses Feld? String columnClassName = metaData.getColumnClassName(i);
                        //Feldname String columnName = metaData.getColumnName(i);
                        Objektwert = resultSet.getObject(Spaltenname);
                        valueMap.put(Spaltenname, Wert);
                    }
                    r.add(Wertezuordnung);
                }
            } Fang (Ausnahme e1) {
                NotifyUtils.notifyUser(null, "Fehler", Benachrichtigungstyp.ERROR);
                e1.printStackTrace();
            Endlich
                Release (Verbindung, Anweisung, Ergebnismenge);
            }
            gib neue Rs(r) zurück;
        }

        öffentliches statisches ResultSet es(String sql) {
            Verbindungsverbindung;
            Aussage Aussage;
            Ergebnismenge Ergebnismenge = null;
            versuchen {
                Verbindung = Mysql.DatabaseUtils.getConnection();
                Anweisung = Verbindung.createStatement();
                Ergebnismenge = Anweisung.executeQuery(sql);
            } Fang (Ausnahme e1) {
                NotifyUtils.notifyUser(null, "Fehler", Benachrichtigungstyp.ERROR);
                e1.printStackTrace();
            }
            Ergebnismenge zurückgeben;
        }


        öffentliche statische void release(Verbindung Verbindung, Anweisung st, Ergebnismenge rs) {
            closeConn(Verbindung);
            schließenRs(rs);
            schließenSt(st);
        }

        öffentliche statische Leere closeRs (ResultSet rs) {
            versuchen {
                wenn (rs != null) {
                    rs.schließen();
                }
            } Fang (SQLException e) {
                e.printStackTrace();
            Endlich
                rs = null;
            }
        }

        private static void closeSt(Anweisung st) {
            versuchen {
                wenn (st != null) {
                    st.schließen();
                }
            } Fang (SQLException e) {
                e.printStackTrace();
            Endlich
                st = null;
            }
        }

        private static void closeConn(Verbindung Verbindung) {
            versuchen {
                wenn (Verbindung != null) {
                    Verbindung.schließen();
                }
            } Fang (SQLException e) {
                e.printStackTrace();
            Endlich
                Verbindung = null;
            }
        }

    }

    öffentliche statische Klasse DatabaseUtils {
        private statische Verbindung Verbindung = null;

        statisch {
            Eigenschafteneigenschaften = PropertiesUtils.readFromSystem();
            versuchen {
                if (Eigenschaften != null) {
                    Klasse.fürName("com.mysql.cj.jdbc.Driver");
                    Verbindung = DriverManager.getConnection(
                            Eigenschaften.getProperty("mysql.url"),
                            Eigenschaften.getProperty("mysql.username"),
                            Eigenschaften.getProperty("mysql.password")
                    );
                    NotifyUtils.notifyUser(null, "Datenbankverbindung erfolgreich", NotificationType.INFORMATION);
                }
            } Fang (Ausnahme e) {
                NotifyUtils.notifyUser(null, "Datenbankverbindung fehlgeschlagen", NotificationType.ERROR);
                e.printStackTrace();
            }
        }

        öffentliche statische Verbindung getConnection() {
            Rückverbindung;
        }
    }


    öffentliche statische void exec(@NotNull AnActionEvent-Ereignis, Vorlage Vorlage) {
        StringValue stringValue = neuer StringValue(template.getDefaultValue());
        Optional.vonNullable(event.getData(PlatformDataKeys.EDITOR)).
                wennVorhanden(Editor -> {
                    Auswahlmodell Auswahlmodell = editor.getSelectionModel();
                    Zeichenfolge ausgewählter Text = Auswahlmodell.getSelectedText();
                    wenn (StringUtils.isNotBlank(selectedText)) {
                        stringValue.setValue(StrUtil.format(template.getDynamicValue(), selectedText));
                    }
                });
        : ClipboardUtils.clipboard(stringValue.getValue());
        BenachrichtigenUtils.notifyUser(event.getProject(), stringValue.getValue(), Benachrichtigungstyp.INFORMATION);
    }

    /**
     * SQL-Anweisungsvorlage */
    öffentliche Enumerationsvorlage {

        SELECT("SELECT * FROM x WHERE 1 = 1 AND ", "SELECT * FROM {} WHERE 1 = 1 AND ", "Abfrageanweisung"),
        UPDATE("UPDATE x SET x = x WHERE 1 = 1 AND ", "UPDATE {} SET x = x WHERE 1 = 1 AND ", "Update-Anweisung"),
        LÖSCHEN("LÖSCHEN VON x, WO 1 = 1 ", "LÖSCHEN VON {}, WO 1 = 1 ", "Löschanweisung"),
        INSERT("INSERT INTO * (x) VALUES (x) ", "INSERT INTO {} (x) VALUES (x) ", "Neue Anweisung"),
        ;

        Vorlage(String Standardwert, String dynamischer Wert, String beschreiben) {
            this.defaultValue = Standardwert;
            this.dynamicValue = dynamischerWert;
            this.describe = beschreiben;
        }

        öffentliche Zeichenfolge getDynamicValue() {
            gibt dynamischen Wert zurück;
        }

        öffentliche Zeichenfolge getDefaultValue() {
            Standardwert zurückgeben;
        }

        öffentliche Zeichenfolge getDescribe() {
            zurückgeben, beschreiben;
        }

        /**
         *Vorlageninhalt: Standardwert*/
        privater endgültiger String Standardwert;
        /**
         * Dynamischer Inhalt */
        privater endgültiger String dynamischer Wert;
        /**
         * Beschreibung */
        private endgültige String-Beschreibung;


    }

}

3. Schreiben Sie eine Testverbindungsklasse, um zu testen, ob MySQL normal eine Verbindung herstellen kann

Paket com.wretchant.fredis.menu.mysql;

importiere com.intellij.notification.NotificationType;
importiere com.intellij.openapi.actionSystem.AnAction;
importiere com.intellij.openapi.actionSystem.AnActionEvent;
importiere com.wretchant.fredis.support.Mysql;
importiere com.wretchant.fredis.util.NotifyUtils;
importiere org.jetbrains.annotations.NotNull;

importiere java.sql.ResultSet;

/**
 * @author Erstellt von Tan Jian am 15.09.2020. Dienstag. 10:17.
 * © Alle Rechte vorbehalten.
 */
öffentliche Klasse MysqlConn erweitert AnAction {


    @Überschreiben
    öffentliche void actionPerformed(@NotNull AnActionEvent event) {
        versuchen {
            ResultSet es = Mysql.JDBCUtil.es("wähle 1 als ct aus");
            es.next();
            int ct = es.getInt("ct");
            wenn (ct == 1) {
                NotifyUtils.notifyUser(null, "Die Verbindung ist normal", NotificationType.INFORMATION);
            } anders {
                NotifyUtils.notifyUser(null, "Verbindung ist abnormal", NotificationType.ERROR);
            }
            Mysql.JDBCUtil.closeRs(es);
        } Fang (Ausnahme e1) {
            e1.printStackTrace();
            NotifyUtils.notifyUser(null, "Verbindung ist abnormal", NotificationType.ERROR);
        }
    }
} 

Oben sind die Details des vollständigen Codes der Verbindung von IDEA mit der MySQL-Datenbank und der Ausführung von Abfragevorgängen aufgeführt. Weitere Informationen zur Verbindung von IDEA mit MySQL zur Ausführung von Abfragevorgängen finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Tipps zum Anzeigen von Java-Quellcode mit Intellij IDEA
  • IntelliJ IDEA-Tipps zur Verwendung von Lesezeichen
  • Detaillierte Erläuterung häufiger Fehler und Verwendungstipps zum Erstellen von Projekten mit Maven in IDEA (empfohlen)
  • Installationsmethode und Verwendungstipps für das IntelliJ IDEA-Plugin EasyCode
  • Tipps zur Verwendung von IntellJ IDEA-Artefakten (Zusammenfassung)
  • Verwenden Sie Intellij Idea, um eine Verbindung zum Remote-Server herzustellen und die Remote-Upload- und Bereitstellungsfunktion zu realisieren
  • So verbinden Sie Phoenix schnell über die grafische Benutzeroberfläche von IDEA
  • So steuern Sie das Funktionssymbol ICON auf der linken Seite des Editors in IDEA (Bedienungsschritte)
  • Wir empfehlen Ihnen dringend, diese Tipps zur Verwendung von IDEA zu befolgen, um die Codeeffizienz zu verbessern.

<<:  Was bedeutet this.parentNode.parentNode (übergeordneter Knoten des übergeordneten Knotens)?

>>:  Detaillierte Analyse dieser Richtung in JavaScript und wie die Richtung geändert werden kann

Artikel empfehlen

Detaillierte Analyse mehrerer Situationen, in denen MySQL-Indizes fehlschlagen

1. Führende Fuzzy-Abfragen können keinen Index ve...

Detaillierte Erklärung der Datentypen und Schemaoptimierung in MySQL

Ich lerne derzeit etwas über MySQL-Optimierung. D...

Implementierung des Nginx Intranet Standalone Reverse Proxy

Inhaltsverzeichnis 1 Nginx Installation 2 Nginx k...

Lösung für den Fehler „Mehrere Primärschlüssel definiert“ in MySQL

Es gibt zwei Möglichkeiten, einen Primärschlüssel...

MySQL5.7 Master-Slave-Konfigurationsbeispielanalyse

Implementierungsmethode für die MySQL5.7-Master-S...

js zum Hochladen von Bildern auf den Server

In diesem Artikelbeispiel wird der spezifische Co...

Probleme mit der Rancher-Bereitstellung und dem Importieren von K8S-Clustern

Die Rancher-Bereitstellung kann über drei Archite...

Verwenden von Shadowsocks zum Erstellen eines transparenten LAN-Gateways

Inhaltsverzeichnis Installieren und konfigurieren...

Vorteile von INSERT INTO SET in MySQL

Daten in MySQL-Datenbank einfügen. Bisher häufig ...

Vue macht Div-Höhe verschiebbar

In diesem Artikel wird der spezifische Code von V...

Detaillierte Erklärung der JS-Homologiestrategie und CSRF

Inhaltsverzeichnis Überblick Same-Origin-Policy (...

Detaillierte Erklärung des TIMESTAMPDIFF-Falls in MySQL

1. Syntax TIMESTAMPDIFF(Einheit, Beginn, Ende); G...