0


自己用纯Java写的这款Mysql客户端工具美哭了,求收藏~

背景

2022年着实有点忙,但是我依然坚持不放下编写代码,又苦于不写什么?再上半年的一场直播课准备中,一个短暂而宏伟的目标闪现到我的脑海,就是编写几个纯Java的软件。于是从3月份就开始着实计划实施。终于折腾出来了,现在分享给大家。

我先分享软件的界面,再给大家说说软件实现的原理!

下载地址

  • 软件支持Windwos 版本、Mac版本
  • 下载地址:bg-boom-ui

软件特点

  • 纯Java开发
  • 免费使用

直入美图,期望大家多多支持

支持背景美图,支持本地图片、网络图片等

支持视频背景,支持TV、广播、小视频、直播流等

支持皮肤+背景图切换,海量图片可在软件中获取

默认的界面,简洁清晰

功能支持

  • 基本实现了Navicat的常用功能
  • 更多功能还在陆续开发,敬请期待~

软件的实现原理

软件通过Mysql的Jdbc驱动类进行实现,区别于其它软件基于Mysql通讯协议实现。

核心实现的连接管理实现如下(由于时间关系这里暂没有实现长连接):

package com.madou.dbtool.mysql.manager;

import com.madou.inters.util.TipUtils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;

/**
 * 管理多个数据库的数据源
 * @author miukoo
 */
public class ConnectionManagerFactory {

    private static final Map<String, Connection> CONNECTION_MAP = new HashMap<>();
    /**
     * 最大连接次数
     */
    private static final int maxRetry = 2;
    public static Connection getConnection(ConnectionInfo connectionInfo,String database) {
        return getConnection(connectionInfo, database, 0);
    }

    /**
     * 获取连接,并最多获取三次
     * @param connectionInfo
     * @param database
     * @param count
     * @return
     */
    private static Connection getConnection(ConnectionInfo connectionInfo,String database,int count) {
        if(count>maxRetry) {
            return null;
        }
        String id = String.format("%s-%s-%s",connectionInfo.getHost(),connectionInfo.getPort(),database);
        Connection connection = CONNECTION_MAP.get(id);
        if(connection==null) {
            try {
                String url = String.format("jdbc:mysql://%s:%d/%s?useUnicode=true&characterEncoding=UTF-8&connectTimeout=500", connectionInfo.getHost(), connectionInfo.getPort(), database);
                Class.forName("com.mysql.cj.jdbc.Driver");
                connection = DriverManager.getConnection(url, connectionInfo.getUsername(), connectionInfo.getPassword());
            } catch (Exception e) {
                if(count==maxRetry){
                    TipUtils.showErrorDialog("获取数据库连接失败:"+e.getMessage(),"Tips");
                }else if(count<maxRetry) {
                    return getConnection(connectionInfo, database,count+1);
                }
            }
        }else{
            try {
                if(connection.isClosed()){
                    connection=null;
                    if(count<maxRetry) {
                        return getConnection(connectionInfo, database,count+1);
                    }
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        CONNECTION_MAP.put(id,connection);
        return connection;
    }
}
标签: java 开发语言 mysql

本文转载自: https://blog.csdn.net/luoxueyong/article/details/124785124
版权归原作者 miukoo 所有, 如有侵权,请联系我们删除。

“自己用纯Java写的这款Mysql客户端工具美哭了,求收藏~”的评论:

还没有评论