IDEA 鏈接Mysql數據庫並執行查詢操作的完整代碼
1、先寫個 Mysql 的鏈接設置頁面
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 譚健 on 2020/8/26. 星期三. 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 連接配置", 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(), "讀取配置文件失敗,配置文件不存在", NotificationType.ERROR); } } }
2、然後簡單的寫個 JDBC 操作數據庫的支持類
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 譚健 on 2020/8/12. 星期三. 17:42. * © All Rights Reserved. */ public class Mysql { /** * 執行查詢語句的返回結果 */ 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); } } // 參考: https://www.cnblogs.com/jyroy/p/9637149.html public static class JDBCUtil { /** * 執行sql 並返回 map 數據 * * @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); // 基礎信息 ResultSetMetaData metaData = resultSet.getMetaData(); // 返回瞭多少個字段 int columnCount = metaData.getColumnCount(); while (resultSet.next()) { Map<String, Object> valueMap = new LinkedHashMap<>(); for (int i = 0; i < columnCount; i++) { // 這個字段是什麼數據類型 String columnClassName = metaData.getColumnClassName(i); // 字段名稱 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, "數據庫連接成功", NotificationType.INFORMATION); } } catch (Exception e) { NotifyUtils.notifyUser(null, "數據庫連接失敗", 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 語句模版 */ public enum Template { SELECT("SELECT * FROM x WHERE 1 = 1 AND ", "SELECT * FROM {} WHERE 1 = 1 AND ", "查詢語句"), UPDATE("UPDATE x SET x = x WHERE 1 = 1 AND ", "UPDATE {} SET x = x WHERE 1 = 1 AND ", "更新語句"), DELETE("DELETE FROM x WHERE 1 = 1 ", "DELETE FROM {} WHERE 1 = 1 ", "刪除語句"), INSERT("INSERT INTO * (x) VALUES (x) ", "INSERT INTO {} (x) VALUES (x) ", "新增語句"), ; 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; } /** * 模版內容:默認值 */ private final String defaultValue; /** * 動態內容 */ private final String dynamicValue; /** * 內容描述 */ private final String describe; } }
3、寫個測試連接的類,測試一下 mysql 是否可以正常鏈接
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 譚健 on 2020/9/15. 星期二. 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, "連接是正常的", NotificationType.INFORMATION); } else { NotifyUtils.notifyUser(null, "連接不正常", NotificationType.ERROR); } Mysql.JDBCUtil.closeRs(es); } catch (Exception e1) { e1.printStackTrace(); NotifyUtils.notifyUser(null, "連接不正常", NotificationType.ERROR); } } }
以上就是IDEA 鏈接Mysql數據庫並執行查詢操作的完整代碼的詳細內容,更多關於IDEA 鏈接Mysql執行查詢操作 的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- MySQL安裝與idea的連接實現
- JDBC連接MySQL並實現模糊查詢
- Java基礎MAC系統下IDEA連接MYSQL數據庫JDBC過程
- MySQL五步走JDBC編程全解讀
- MySQL數據庫 JDBC 編程(Java 連接 MySQL)