IDEA 链接Mysql数据库并执行查询操作的完整代码

作者:简简单单OnlineZuozuo 时间:2024-01-21 07:03:58 

 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);
       }
   }

}

IDEA 链接Mysql数据库并执行查询操作的完整代码

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.
* &copy; 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、写个测试连接的类&#xff0c;测试一下 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.
* &copy; 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数据库并执行查询操作的完整代码

来源:https://wretchant.blog.csdn.net/article/details/108625784

标签:IDEA,Mysql,查询
0
投稿

猜你喜欢

  • Mac下python包管理工具pip的安装

    2023-11-19 11:09:46
  • 在pycharm中使用git版本管理以及同步github的方法

    2021-12-08 01:59:58
  • MySQL动态修改varchar长度的方法

    2024-01-17 22:27:10
  • MySQL将select结果执行update的实例教程

    2024-01-17 14:00:59
  • 详解inet_pton()和inet_ntop()函数

    2023-07-23 04:38:26
  • 浅谈Golang 切片(slice)扩容机制的原理

    2024-04-29 13:06:20
  • Python自动化测试框架之unittest使用详解

    2021-07-02 17:42:27
  • windows下python安装pip方法详解

    2023-12-13 19:43:16
  • SQLite数据库管理相关命令的使用介绍

    2024-01-27 12:41:00
  • 基于Go和PHP语言实现爬楼梯算法的思路详解

    2024-05-22 10:18:20
  • DBeaver一款替代Navicat的数据库可视化工具

    2024-01-18 07:55:44
  • python实现手机通讯录搜索功能

    2023-11-04 08:04:08
  • Python如何测试stdout输出

    2023-10-22 23:59:56
  • PyTorch加载模型model.load_state_dict()问题及解决

    2022-11-08 07:03:53
  • SQL Server误区30日谈 第12天 TempDB的文件数和需要和CPU数目保持一致

    2024-01-21 19:07:29
  • 关于SQL嵌套的误解分析

    2024-01-22 22:01:03
  • [翻译]标记语言和样式手册 chapter 6 短语元素

    2008-01-25 16:37:00
  • mssql 指定字段编号sql语句

    2024-01-21 18:58:53
  • Python 数据处理库 pandas进阶教程

    2022-04-18 01:17:13
  • python使用正则表达式匹配txt特定字符串(有换行)

    2023-03-23 07:46:03
  • asp之家 网络编程 m.aspxhome.com