IDEA 鏈接Mysql數(shù)據(jù)庫(kù)并執(zhí)行查詢操作的完整代碼
1、先寫(xiě)個(gè) Mysql 的鏈接設(shè)置頁(yè)面
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、然后簡(jiǎn)單的寫(xiě)個(gè) JDBC 操作數(shù)據(jù)庫(kù)的支持類
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 { /** * 執(zhí)行查詢語(yǔ)句的返回結(jié)果 */ 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 { /** * 執(zhí)行sql 并返回 map 數(shù)據(jù) * * @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); // 基礎(chǔ)信息 ResultSetMetaData metaData = resultSet.getMetaData(); // 返回了多少個(gè)字段 int columnCount = metaData.getColumnCount(); while (resultSet.next()) { Map<String, Object> valueMap = new LinkedHashMap<>(); for (int i = 0; i < columnCount; i++) {// 這個(gè)字段是什么數(shù)據(jù)類型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, "數(shù)據(jù)庫(kù)連接成功", NotificationType.INFORMATION); } } catch (Exception e) { NotifyUtils.notifyUser(null, "數(shù)據(jù)庫(kù)連接失敗", 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 語(yǔ)句模版 */ public enum Template { SELECT("SELECT * FROM x WHERE 1 = 1 AND ", "SELECT * FROM {} WHERE 1 = 1 AND ", "查詢語(yǔ)句"), UPDATE("UPDATE x SET x = x WHERE 1 = 1 AND ", "UPDATE {} SET x = x WHERE 1 = 1 AND ", "更新語(yǔ)句"), DELETE("DELETE FROM x WHERE 1 = 1 ", "DELETE FROM {} WHERE 1 = 1 ", "刪除語(yǔ)句"), INSERT("INSERT INTO * (x) VALUES (x) ", "INSERT INTO {} (x) VALUES (x) ", "新增語(yǔ)句"), ; 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; } /** * 模版內(nèi)容:默認(rèn)值 */ private final String defaultValue; /** * 動(dòng)態(tài)內(nèi)容 */ private final String dynamicValue; /** * 內(nèi)容描述 */ private final String describe; } }
3、寫(xiě)個(gè)測(cè)試連接的類,測(cè)試一下 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數(shù)據(jù)庫(kù)并執(zhí)行查詢操作的完整代碼的詳細(xì)內(nèi)容,更多關(guān)于IDEA 鏈接Mysql執(zhí)行查詢操作 的資料請(qǐng)關(guān)注本站其它相關(guān)文章!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。