2023年5月18日12:13:55

master
zhangmeng 2023-05-18 12:14:37 +08:00
parent 95e3136974
commit 99439aaf68
17 changed files with 415 additions and 11 deletions

View File

@ -610,4 +610,9 @@ public class CodecToolsController {
public void socket_client_nio_menu_item(ActionEvent event) {
load_server_tools(7);
}
public void sql_query_gen_menu_item(ActionEvent event) {
load_sql_tools(3);
}
}

View File

@ -566,4 +566,8 @@ public class HomeController implements Serializable {
public void capter_screen_menu_item(ActionEvent event) {
load_small_tools(15);
}
public void sql_query_gen_menu_item(ActionEvent event) {
load_sql_tools(3);
}
}

View File

@ -526,4 +526,12 @@ public class HttpToolsController {
public void capter_screen_menu_item(ActionEvent event) {
load_small_tools(15);
}
public void json_javabean_gen_menu_item(ActionEvent event) {
load_sql_tools(2);
}
public void sql_query_gen_menu_item(ActionEvent event) {
load_sql_tools(3);
}
}

View File

@ -106,12 +106,12 @@ public class PlayerController {
@FXML
public void md5_menu_item() {
load_encrypt();
load_encrypt(1);
}
@FXML
public void spring_security_menu_item() {
load_encrypt();
load_encrypt(2);
}
@FXML
@ -275,7 +275,7 @@ public class PlayerController {
}
public void load_encrypt() {
public void load_encrypt(int index ) {
close_current_page_init();
Stage stage = (Stage) splitPane.getScene().getWindow();
AnchorPane fx = null;
@ -286,6 +286,9 @@ public class PlayerController {
}
Scene scene = new Scene(fx);
stage.setScene(scene);
ListView<ResourcesUtils.Player> listView = (ListView) fx.lookup("#listView");
listView.getSelectionModel().select(index);
}
@FXML
@ -579,4 +582,60 @@ public class PlayerController {
public void maven_jar_install_menu_item(ActionEvent event) {
load_small_tools(10);
}
public void jks_file_menu_item(ActionEvent event) {
load_encrypt(3);
}
public void music_parser_menu_item(ActionEvent event) {
boolean flag = false;
if (music_parser != null){
flag = true;
}
music_parser(flag);
}
public void word_ocr_menu_item(ActionEvent event) {
load_small_tools(11);
}
public void bar_code_menu_item(ActionEvent event) {
load_small_tools(12);
}
public void pdf_menu_item(ActionEvent event) {
load_small_tools(13);
}
public void batch_update_file_name_menu_item(ActionEvent event) {
load_small_tools(14);
}
public void capter_screen_menu_item(ActionEvent event) {
load_small_tools(15);
}
public void json_javabean_gen_menu_item(ActionEvent event) {
load_sql_tools(2);
}
public void sql_query_gen_menu_item(ActionEvent event) {
load_sql_tools(3);
}
public void socket_client_aio_menu_item(ActionEvent event) {
load_server_tools(4);
}
public void socket_server_aio_menu_item(ActionEvent event) {
load_server_tools(5);
}
public void socket_server_nio_menu_item(ActionEvent event) {
load_server_tools(6);
}
public void socket_client_nio_menu_item(ActionEvent event) {
load_server_tools(7);
}
}

View File

@ -652,4 +652,39 @@ public class ServerToolsController {
}
socket_client_nio(flag);
}
public void jks_file_menu_item(ActionEvent event) {
load_encrypt(2);
}
public void music_parser_menu_item(ActionEvent event) {
load_player(3);
}
public void word_ocr_menu_item(ActionEvent event) {
load_small_tools(11);
}
public void bar_code_menu_item(ActionEvent event) {
load_small_tools(12);
}
public void pdf_menu_item(ActionEvent event) {
load_small_tools(13);
}
public void batch_update_file_name_menu_item(ActionEvent event) {
load_small_tools(14);
}
public void capter_screen_menu_item(ActionEvent event) {
load_small_tools(15);
}
public void json_javabean_gen_menu_item(ActionEvent event) {
}
public void sql_query_gen_menu_item(ActionEvent event) {
}
}

View File

@ -978,4 +978,8 @@ public class SmallToolsController {
public void socket_client_nio_menu_item(ActionEvent event) {
load_server_tools(7);
}
public void sql_query_gen_menu_item(ActionEvent event) {
load_mysql_tools(3);
}
}

View File

@ -0,0 +1,191 @@
package com.zhangmeng.tools.controller;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.sql.visitor.functions.If;
import com.zhangmeng.tools.utils.AlertUtils;
import com.zhangmeng.tools.utils.FxmlUtils;
import javafx.application.Platform;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.scene.control.*;
import javafx.scene.control.cell.MapValueFactory;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyCodeCombination;
import javafx.scene.input.KeyCombination;
import lombok.extern.slf4j.Slf4j;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author :
* @version : 1.0
* @date : 2023-05-18 09:57
*/
@Slf4j
public class SqlQueryController {
@FXML
public TextField username;
@FXML
public TextField password;
@FXML
public Button query;
@FXML
public TextField ip;
@FXML
public TextField port;
@FXML
public TextField database;
@FXML
public TextArea query_area;
@FXML
public TableView<Map<String, SimpleStringProperty>> result_view;
private JdbcTemplate jdbcTemplate;
private final ObservableList<Map<String, SimpleStringProperty>> result_list = FXCollections.observableArrayList();
private SimpleBooleanProperty is_exchange = new SimpleBooleanProperty(false);
@FXML
public void initialize() {
result_view.setItems(result_list);
ip.setText("127.0.0.1");
port.setText("3306");
database.setText("mystyle-blog");
username.setText("root");
password.setText("root");
//绑定截图快捷键,使用快捷键达到点击按钮的目的
KeyCombination keyCombination = KeyCombination.valueOf("ctrl+q");
// 处理快捷键事件
Runnable action = this::run_query;
query.setOnKeyPressed(event -> {
if (keyCombination.match(event)) {
action.run();
event.consume();
}
});
query.setOnAction(event -> run_query());
database.textProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
is_exchange.set(true);
}
});
}
public void run_query() {
if (query_area.getSelectedText().length() == 0) {
AlertUtils.alert_warning("请选择要执行的sql!");
return;
}
String sql = query_area.getSelectedText();
if (is_exchange.get()){
connection();
}
if (jdbcTemplate == null) {
connection();
}
result_list.clear();
result_view.getColumns().clear();
new Thread(() -> {
List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
Platform.runLater(() -> {
if (list.size() > 0) {
Map<String, Object> map1 = list.get(0);
for (Map.Entry<String, Object> entry : map1.entrySet()) {
String key = entry.getKey();
if (key.equals("unique_identification_key")){
continue;
}
if (key.equals("now_pos")){//now_pos -> null
continue;
}
TableColumn<Map<String, SimpleStringProperty>, String> column = new TableColumn<>(key);
column.setCellValueFactory(new MapValueFactory(key));
result_view.getColumns().add(column);
}
for (Map<String, Object> map : list) {//unique_identification_key -> 07f83e41-6f0b-4801-b4c7-77778b3a6e50-1422840095098011648
Map<String, SimpleStringProperty> map2 = new HashMap<>();
for (Map.Entry<String, Object> entry : map.entrySet()) {
String key = entry.getKey();
String value = entry.getValue() == null ? "" : entry.getValue().toString();
map2.put(key, new SimpleStringProperty(value));
}
result_list.add(map2);
}
}
});
}).start();
}
public void getJdbcTemplate() {
if (jdbcTemplate == null) {
jdbcTemplate = new JdbcTemplate();
DruidDataSource datasource = new DruidDataSource();
String url = "jdbc:mysql://" + ip.getText() + ":" + port.getText() + "/" + database.getText() + "?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true";
String driverClassName = "com.mysql.jdbc.Driver";
datasource.setUrl(url);
datasource.setUsername(username.getText());
datasource.setPassword(password.getText());
datasource.setDriverClassName(driverClassName);
jdbcTemplate.setDataSource(datasource);
}
}
public void connection() {
if (ip.getText().length() == 0) {
AlertUtils.alert_warning("ip不能为空!");
return;
}
if (port.getText().length() == 0) {
AlertUtils.alert_warning("端口不能为空!");
return;
}
if (database.getText().length() == 0) {
AlertUtils.alert_warning("数据库名不能为空!");
return;
}
getJdbcTemplate();
is_exchange.set(false);
}
}

View File

@ -66,6 +66,7 @@ public class SqlToolsController {
private AnchorPane mysql_code_gen;
private AnchorPane mybatis_plus_gen;
private AnchorPane json2JavaBean;
private AnchorPane sql_query;
public static final String color_cell = "#f4f4f4";
@ -219,6 +220,13 @@ public class SqlToolsController {
}
json2JavaBean(flag);
}
if (newValue.getIndex() == 3) {
if (sql_query != null){
flag = true;
}
sql_query(flag);
}
}
});
}
@ -228,6 +236,7 @@ public class SqlToolsController {
case MySql_Code_Generate -> new Image(ImagePath.path(ImagePath.ImagePathType.MD5));
case MyBatis_plus_Generate -> new Image(ImagePath.path(ImagePath.ImagePathType.MD5));
case Json_To_JavaBean -> new Image(ImagePath.path(ImagePath.ImagePathType.MD5));
case Sql_Query -> new Image(ImagePath.path(ImagePath.ImagePathType.MD5));
};
}
@ -337,6 +346,23 @@ public class SqlToolsController {
common_method();
}
private void sql_query(boolean flag){
//默认选择第一个
listView.getSelectionModel().select(3);
if (!flag){
try {
root = FXMLLoader.load(ResourcesUtils.getResource("sql-query"));
} catch (IOException e) {
e.printStackTrace();
}
sql_query = root;
}else {
root = sql_query;
}
common_method();
}
private void common_method() {
splitPane.getItems().remove(1);
splitPane.getItems().add(1, root);
@ -550,4 +576,12 @@ public class SqlToolsController {
public void socket_client_nio_menu_item(ActionEvent event) {
load_server_tools(7);
}
public void sql_query_gen_menu_item(ActionEvent event) {
boolean flag = false;
if (sql_query != null){
flag = true;
}
sql_query(flag);
}
}

View File

@ -196,6 +196,7 @@ public class ResourcesUtils {
MySql_Code_Generate("mysql 代码生成", 0),
MyBatis_plus_Generate("mybatis-plus 代码生成", 1),
Json_To_JavaBean("json转javabean 代码生成", 2),
Sql_Query("sql 查询", 3),
;
SqlTools(String title, int index) {

View File

@ -63,6 +63,7 @@
<MenuItem mnemonicParsing="false" text="mysql代码生成" onAction="#sql_code_gen_menu_item"/>
<MenuItem mnemonicParsing="false" text="mybatis-plus 代码生成" onAction="#mybatis_plus_gen_menu_item"/>
<MenuItem mnemonicParsing="false" text="json转javaBean 代码生成" onAction="#json_javabean_gen_menu_item"/>
<MenuItem mnemonicParsing="false" text="sql 查询" onAction="#sql_query_gen_menu_item"/>
</items>
</Menu>

View File

@ -65,6 +65,7 @@
<MenuItem mnemonicParsing="false" text="mysql代码生成" onAction="#sql_code_gen_menu_item"/>
<MenuItem mnemonicParsing="false" text="mybatis-plus 代码生成" onAction="#mybatis_plus_gen_menu_item"/>
<MenuItem mnemonicParsing="false" text="json转javaBean 代码生成" onAction="#json_javabean_gen_menu_item"/>
<MenuItem mnemonicParsing="false" text="sql 查询" onAction="#sql_query_gen_menu_item"/>
</items>
</Menu>

View File

@ -65,6 +65,7 @@
<MenuItem mnemonicParsing="false" text="mysql代码生成" onAction="#sql_code_gen_menu_item"/>
<MenuItem mnemonicParsing="false" text="mybatis-plus 代码生成" onAction="#mybatis_plus_gen_menu_item"/>
<MenuItem mnemonicParsing="false" text="json转javaBean 代码生成" onAction="#json_javabean_gen_menu_item"/>
<MenuItem mnemonicParsing="false" text="sql 查询" onAction="#sql_query_gen_menu_item"/>
</items>
</Menu>

View File

@ -15,8 +15,9 @@
<Menu mnemonicParsing="false" text="加密工具">
<items>
<MenuItem mnemonicParsing="false" onAction="#md5_menu_item" text="md5 加密"/>
<MenuItem mnemonicParsing="false" onAction="#spring_security_menu_item"
text="spring security 加密"/>
<MenuItem mnemonicParsing="false" onAction="#spring_security_menu_item" text="spring security 加密"/>
<MenuItem mnemonicParsing="false" onAction="#jks_file_menu_item" text="jkd 文件生成"/>
</items>
</Menu>
<Menu mnemonicParsing="false" text="影音工具">
@ -24,6 +25,7 @@
<MenuItem mnemonicParsing="false" text="视频播放" onAction="#video_menu_item"/>
<MenuItem mnemonicParsing="false" text="音乐播放" onAction="#music_menu_item"/>
<MenuItem mnemonicParsing="false" text="vip 视频解析" onAction="#vip_parser_menu_item"/>
<MenuItem mnemonicParsing="false" text="音乐解析" onAction="#music_parser_menu_item"/>
</items>
</Menu>
<Menu mnemonicParsing="false" text="常用小工具">
@ -39,6 +41,11 @@
<MenuItem mnemonicParsing="false" text="手机号工具" onAction="#telephone_menu_item"/>
<MenuItem mnemonicParsing="false" text="JsonView" onAction="#JsonView_menu_item"/>
<MenuItem mnemonicParsing="false" text="maven-jar-install" onAction="#maven_jar_install_menu_item"/>
<MenuItem mnemonicParsing="false" text="word-ocr" onAction="#word_ocr_menu_item"/>
<MenuItem mnemonicParsing="false" text="条形码识别" onAction="#bar_code_menu_item"/>
<MenuItem mnemonicParsing="false" text="pdf识别" onAction="#pdf_menu_item"/>
<MenuItem mnemonicParsing="false" text="批量修改文件名" onAction="#batch_update_file_name_menu_item"/>
<MenuItem mnemonicParsing="false" text="截图工具" onAction="#capter_screen_menu_item"/>
</items>
</Menu>
@ -51,10 +58,12 @@
</items>
</Menu>
<Menu mnemonicParsing="false" text="sql工具">
<Menu mnemonicParsing="false" text="代码工具">
<items>
<MenuItem mnemonicParsing="false" text="mysql代码生成" onAction="#sql_code_gen_menu_item"/>
<MenuItem mnemonicParsing="false" text="mybatis-plus 代码生成" onAction="#mybatis_plus_gen_menu_item"/>
<MenuItem mnemonicParsing="false" text="json转javaBean 代码生成" onAction="#json_javabean_gen_menu_item"/>
<MenuItem mnemonicParsing="false" text="sql 查询" onAction="#sql_query_gen_menu_item"/>
</items>
</Menu>
@ -72,6 +81,10 @@
<MenuItem mnemonicParsing="false" text="ftp-server 请求工具" onAction="#ftp_server_menu_item"/>
<MenuItem mnemonicParsing="false" text="ssh-client 请求工具" onAction="#ssh_client_menu_item"/>
<MenuItem mnemonicParsing="false" text="socket-server 服务工具" onAction="#socket_server_menu_item"/>
<MenuItem mnemonicParsing="false" text="socket-client-aio 客户端工具" onAction="#socket_client_aio_menu_item"/>
<MenuItem mnemonicParsing="false" text="socket-server-aio 服务端工具" onAction="#socket_server_aio_menu_item"/>
<MenuItem mnemonicParsing="false" text="socket-server-nio 服务端工具" onAction="#socket_server_nio_menu_item"/>
<MenuItem mnemonicParsing="false" text="socket-client-nio 客户端工具" onAction="#socket_client_nio_menu_item"/>
</items>
</Menu>
</menus>

View File

@ -17,8 +17,9 @@
<Menu mnemonicParsing="false" text="加密工具">
<items>
<MenuItem mnemonicParsing="false" onAction="#md5_menu_item" text="md5 加密"/>
<MenuItem mnemonicParsing="false" onAction="#spring_security_menu_item"
text="spring security 加密"/>
<MenuItem mnemonicParsing="false" onAction="#spring_security_menu_item" text="spring security 加密"/>
<MenuItem mnemonicParsing="false" onAction="#jks_file_menu_item" text="jkd 文件生成"/>
</items>
</Menu>
<Menu mnemonicParsing="false" text="影音工具">
@ -26,6 +27,7 @@
<MenuItem mnemonicParsing="false" text="视频播放" onAction="#video_menu_item"/>
<MenuItem mnemonicParsing="false" text="音乐播放" onAction="#music_menu_item"/>
<MenuItem mnemonicParsing="false" text="vip 视频解析" onAction="#vip_parser_menu_item"/>
<MenuItem mnemonicParsing="false" text="音乐解析" onAction="#music_parser_menu_item"/>
</items>
</Menu>
<Menu mnemonicParsing="false" text="常用小工具">
@ -41,6 +43,11 @@
<MenuItem mnemonicParsing="false" text="手机号工具" onAction="#telephone_menu_item"/>
<MenuItem mnemonicParsing="false" text="JsonView" onAction="#JsonView_menu_item"/>
<MenuItem mnemonicParsing="false" text="maven-jar-install" onAction="#maven_jar_install_menu_item"/>
<MenuItem mnemonicParsing="false" text="word-ocr" onAction="#word_ocr_menu_item"/>
<MenuItem mnemonicParsing="false" text="条形码识别" onAction="#bar_code_menu_item"/>
<MenuItem mnemonicParsing="false" text="pdf识别" onAction="#pdf_menu_item"/>
<MenuItem mnemonicParsing="false" text="批量修改文件名" onAction="#batch_update_file_name_menu_item"/>
<MenuItem mnemonicParsing="false" text="截图工具" onAction="#capter_screen_menu_item"/>
</items>
</Menu>
@ -53,10 +60,12 @@
</items>
</Menu>
<Menu mnemonicParsing="false" text="sql工具">
<Menu mnemonicParsing="false" text="代码工具">
<items>
<MenuItem mnemonicParsing="false" text="mysql代码生成" onAction="#sql_code_gen_menu_item"/>
<MenuItem mnemonicParsing="false" text="mybatis-plus 代码生成" onAction="#mybatis_plus_gen_menu_item"/>
<MenuItem mnemonicParsing="false" text="json转javaBean 代码生成" onAction="#json_javabean_gen_menu_item"/>
<MenuItem mnemonicParsing="false" text="sql 查询" onAction="#sql_query_gen_menu_item"/>
</items>
</Menu>
@ -72,12 +81,12 @@
<items>
<MenuItem mnemonicParsing="false" text="http-server 请求工具" onAction="#http_server_menu_item"/>
<MenuItem mnemonicParsing="false" text="ftp-server 请求工具" onAction="#ftp_server_menu_item"/>
<MenuItem mnemonicParsing="false" text="ssh-client 连接工具" onAction="#ssh_client_menu_item"/>
<MenuItem mnemonicParsing="false" text="ssh-client 请求工具" onAction="#ssh_client_menu_item"/>
<MenuItem mnemonicParsing="false" text="socket-server 服务工具" onAction="#socket_server_menu_item"/>
<MenuItem mnemonicParsing="false" text="socket-client-aio 客户端工具" onAction="#socket_client_aio_menu_item"/>
<MenuItem mnemonicParsing="false" text="socket-server-aio 服务端工具" onAction="#socket_server_aio_menu_item"/>
<MenuItem mnemonicParsing="false" text="socket-server-nio 服务端工具" onAction="#socket_server_nio_menu_item"/>
<MenuItem mnemonicParsing="false" text="socket-client-nio 服务端工具" onAction="#socket_client_nio_menu_item"/>
<MenuItem mnemonicParsing="false" text="socket-client-nio 客户端工具" onAction="#socket_client_nio_menu_item"/>
</items>
</Menu>
</menus>

View File

@ -63,6 +63,7 @@
<MenuItem mnemonicParsing="false" text="mysql代码生成" onAction="#sql_code_gen_menu_item"/>
<MenuItem mnemonicParsing="false" text="mybatis-plus 代码生成" onAction="#mybatis_plus_gen_menu_item"/>
<MenuItem mnemonicParsing="false" text="json转javaBean 代码生成" onAction="#json_javabean_gen_menu_item"/>
<MenuItem mnemonicParsing="false" text="sql 查询" onAction="#sql_query_gen_menu_item"/>
</items>
</Menu>

View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.SplitPane?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.Font?>
<AnchorPane prefHeight="649.0" prefWidth="1200.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.zhangmeng.tools.controller.SqlQueryController">
<children>
<Label layoutX="53.0" layoutY="44.0" text="用户名:" />
<Label layoutX="279.0" layoutY="44.0" text="密码:" />
<Label layoutX="493.0" layoutY="44.0" text="ip:" />
<TextField fx:id="ip" layoutX="533.0" layoutY="40.0" prefHeight="25.0" prefWidth="140.0" />
<TextField fx:id="username" layoutX="99.0" layoutY="40.0" prefHeight="25.0" prefWidth="161.0" />
<TextField fx:id="password" layoutX="320.0" layoutY="40.0" />
<Button fx:id="query" layoutX="1094.0" layoutY="40.0" mnemonicParsing="false" text="查询" />
<SplitPane dividerPositions="0.5" layoutX="53.0" layoutY="99.0" orientation="VERTICAL" AnchorPane.bottomAnchor="48.0" AnchorPane.leftAnchor="53.0" AnchorPane.rightAnchor="42.0" AnchorPane.topAnchor="99.0">
<items>
<TextArea fx:id="query_area" prefHeight="200.0" prefWidth="1103.0" promptText="请输入查询sql">
<font>
<Font name="KaiTi" size="17.0" />
</font>
</TextArea>
<TableView fx:id="result_view" prefHeight="294.0" prefWidth="1103.0" />
</items>
</SplitPane>
<Label layoutX="693.0" layoutY="44.0" text="端口:" />
<TextField fx:id="port" layoutX="731.0" layoutY="40.0" prefHeight="25.0" prefWidth="111.0" />
<TextField fx:id="database" layoutX="922.0" layoutY="40.0" />
<Label layoutX="857.0" layoutY="44.0" text="数据库名:" />
</children>
</AnchorPane>

View File

@ -65,6 +65,7 @@
<MenuItem mnemonicParsing="false" text="mysql代码生成" onAction="#sql_code_gen_menu_item"/>
<MenuItem mnemonicParsing="false" text="mybatis-plus 代码生成" onAction="#mybatis_plus_gen_menu_item"/>
<MenuItem mnemonicParsing="false" text="json转javaBean 代码生成" onAction="#json_javabean_gen_menu_item"/>
<MenuItem mnemonicParsing="false" text="sql 查询" onAction="#sql_query_gen_menu_item"/>
</items>
</Menu>