1. Write a Mysql link setting page first package com.wretchant.fredis.menu.mysql; import com.intellij.notification.NotificationType; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.wretchant.fredis.gui.dialog.TableDialog; import com.wretchant.fredis.util.NotifyUtils; import com.wretchant.fredis.util.PropertiesUtils; import org.jetbrains.annotations.NotNull; import javax.swing.*; import java.util.Map; import java.util.Properties; /** * @author Created by Tan Jian on 2020/8/26. Wednesday. 15:24. * © All Rights Reserved. */ public class MysqlConfig extends AnAction { @Override public void actionPerformed(@NotNull AnActionEvent event) { Properties properties = PropertiesUtils.readFromSystem(); if (properties != null) { TableDialog.TableField build = TableDialog.TableField.build(properties.stringPropertyNames()); TableDialog dialog = new TableDialog("Mysql connection configuration", build); for (int i = 0; i < dialog.getLabels().size(); i++) { JLabel label = dialog.getLabels().get(i); JTextField textField = dialog.getInputs().get(i); String property = properties.getProperty(label.getText()); textField.setText(property); } dialog.show(); if (dialog.isOK()) { Map<String, String> valueMap = dialog.getValueMap(); valueMap.forEach(properties::setProperty); PropertiesUtils.write2System(properties); } } else { NotifyUtils.notifyUser(event.getProject(), "Failed to read configuration file, configuration file does not exist", NotificationType.ERROR); } } } 2. Then simply write a JDBC support class for operating the database package com.wretchant.fredis.support; import cn.hutool.core.util.StrUtil; import com.intellij.notification.NotificationType; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.editor.SelectionModel; import com.wretchant.fredis.util.ClipboardUtils; import com.wretchant.fredis.util.NotifyUtils; import com.wretchant.fredis.util.PropertiesUtils; import com.wretchant.fredis.value.StringValue; import org.apache.commons.lang.StringUtils; import org.jetbrains.annotations.NotNull; import java.sql.*; import java.util.*; /** * @author Created by Tan Jian on 2020/8/12. Wednesday. 17:42. * © All Rights Reserved. */ public class Mysql { /** * Execute the query statement to return the result */ public static class Rs { public Rs(List<Map<String, Object>> r) { this.r = r; this.count = r.size(); } private List<Map<String, Object>> r = new ArrayList<>(); private int count; public List<Map<String, Object>> getR() { return r; } public void setR(List<Map<String, Object>> r) { this.r = r; } public int getCount() { return count; } public void setCount(int count) { this.count = count; } public Map<String, Object> one() { if (Objects.isNull(r) || r.isEmpty()) { return null; } return r.get(0); } public Object oneGet(String key) { return one().get(key); } } // Reference: https://www.cnblogs.com/jyroy/p/9637149.html public static class JDBCUtil { /** * Execute sql and return map data * * @param sql * @return */ public static Rs rs(String sql) { Connection connection = null; Statement statement = null; ResultSet resultSet = null; List<Map<String, Object>> r = new ArrayList<>(); try { connection = Mysql.DatabaseUtils.getConnection(); statement = connection.createStatement(); resultSet = statement.executeQuery(sql); // Basic information ResultSetMetaData metaData = resultSet.getMetaData(); // How many fields are returned int columnCount = metaData.getColumnCount(); while (resultSet.next()) { Map<String, Object> valueMap = new LinkedHashMap<>(); for (int i = 0; i < columnCount; i++) { // What data type is this field? String columnClassName = metaData.getColumnClassName(i); //Field name String columnName = metaData.getColumnName(i); Object value = resultSet.getObject(columnName); valueMap.put(columnName, value); } r.add(valueMap); } } catch (Exception e1) { NotifyUtils.notifyUser(null, "error", NotificationType.ERROR); e1.printStackTrace(); finally release(connection, statement, resultSet); } return new Rs(r); } public static ResultSet es(String sql) { Connection connection; Statement statement; ResultSet resultSet = null; try { connection = Mysql.DatabaseUtils.getConnection(); statement = connection.createStatement(); resultSet = statement.executeQuery(sql); } catch (Exception e1) { NotifyUtils.notifyUser(null, "error", NotificationType.ERROR); e1.printStackTrace(); } return resultSet; } public static void release(Connection connection, Statement st, ResultSet rs) { closeConn(connection); closeRs(rs); closeSt(st); } public static void closeRs(ResultSet rs) { try { if (rs != null) { rs.close(); } } catch (SQLException e) { e.printStackTrace(); finally rs = null; } } private static void closeSt(Statement st) { try { if (st != null) { st.close(); } } catch (SQLException e) { e.printStackTrace(); finally st = null; } } private static void closeConn(Connection connection) { try { if (connection != null) { connection.close(); } } catch (SQLException e) { e.printStackTrace(); finally connection = null; } } } public static class DatabaseUtils { private static Connection connection = null; static { Properties properties = PropertiesUtils.readFromSystem(); try { if (properties != null) { Class.forName("com.mysql.cj.jdbc.Driver"); connection = DriverManager.getConnection( properties.getProperty("mysql.url"), properties.getProperty("mysql.username"), properties.getProperty("mysql.password") ); NotifyUtils.notifyUser(null, "Database connection successful", NotificationType.INFORMATION); } } catch (Exception e) { NotifyUtils.notifyUser(null, "Database connection failed", NotificationType.ERROR); e.printStackTrace(); } } public static Connection getConnection() { return connection; } } public static void exec(@NotNull AnActionEvent event, Template template) { StringValue stringValue = new StringValue(template.getDefaultValue()); Optional.ofNullable(event.getData(PlatformDataKeys.EDITOR)). ifPresent(editor -> { SelectionModel selectionModel = editor.getSelectionModel(); String selectedText = selectionModel.getSelectedText(); if (StringUtils.isNotBlank(selectedText)) { stringValue.setValue(StrUtil.format(template.getDynamicValue(), selectedText)); } }); ClipboardUtils.clipboard(stringValue.getValue()); NotifyUtils.notifyUser(event.getProject(), stringValue.getValue(), NotificationType.INFORMATION); } /** * sql statement template */ public enum Template { SELECT("SELECT * FROM x WHERE 1 = 1 AND ", "SELECT * FROM {} WHERE 1 = 1 AND ", "Query statement"), UPDATE("UPDATE x SET x = x WHERE 1 = 1 AND ", "UPDATE {} SET x = x WHERE 1 = 1 AND ", "Update statement"), DELETE("DELETE FROM x WHERE 1 = 1 ", "DELETE FROM {} WHERE 1 = 1 ", "delete statement"), INSERT("INSERT INTO * (x) VALUES (x) ", "INSERT INTO {} (x) VALUES (x) ", "New statement"), ; Template(String defaultValue, String dynamicValue, String describe) { this.defaultValue = defaultValue; this.dynamicValue = dynamicValue; this.describe = describe; } public String getDynamicValue() { return dynamicValue; } public String getDefaultValue() { return defaultValue; } public String getDescribe() { return describe; } /** * Template content: default value*/ private final String defaultValue; /** * Dynamic content */ private final String dynamicValue; /** * Description */ private final String describe; } } 3. Write a test connection class to test whether mysql can connect normally package com.wretchant.fredis.menu.mysql; import com.intellij.notification.NotificationType; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.wretchant.fredis.support.Mysql; import com.wretchant.fredis.util.NotifyUtils; import org.jetbrains.annotations.NotNull; import java.sql.ResultSet; /** * @author Created by Tan Jian on 2020/9/15. Tuesday. 10:17. * © All Rights Reserved. */ public class MysqlConn extends AnAction { @Override public void actionPerformed(@NotNull AnActionEvent event) { try { ResultSet es = Mysql.JDBCUtil.es("select 1 as ct"); es.next(); int ct = es.getInt("ct"); if (ct == 1) { NotifyUtils.notifyUser(null, "The connection is normal", NotificationType.INFORMATION); } else { NotifyUtils.notifyUser(null, "Connection is abnormal", NotificationType.ERROR); } Mysql.JDBCUtil.closeRs(es); } catch (Exception e1) { e1.printStackTrace(); NotifyUtils.notifyUser(null, "Connection is abnormal", NotificationType.ERROR); } } } The above is the details of the complete code of IDEA connecting to MySQL database and executing query operations. For more information about IDEA connecting to MySQL to execute query operations, please pay attention to other related articles on 123WORDPRESS.COM! You may also be interested in:
|
<<: What does this.parentNode.parentNode (parent node of parent node) mean?
>>: JavaScript in-depth analysis of the direction of this and how to modify the direction
Table of contents Step 1: Build the framework Ste...
Preface As Linux operation and maintenance engine...
Countdown function needs to be implemented in man...
Table of contents Solution: 1. IGNORE 2. REPLACE ...
First, let's explain the network setting mode...
Table of contents webpack5 Official Start Buildin...
A very useful function group_concat(), the manual...
Due to the initial partitioning of the system, th...
What is ELK? ELK is a complete set of log collect...
The installation and configuration methods of MyS...
1. Check BIOS First check which startup mode your...
First download the latest MySQL 5.7.17 Community ...
As an entry-level Linux user, I have used simple ...
Table of contents Vue3 + TypeScript Learning 1. E...
background I have a project service that uses AWS...