diff --git a/README.md b/README.md
index c7750a6..e449277 100644
--- a/README.md
+++ b/README.md
@@ -113,6 +113,15 @@
> 部分代码借鉴 开源项目: boot-security gitee 地址: https://gitee.com/zhang.w/boot-security
+#### 5.2 mybatis-plus 代码生成
+
+> 使用 mybatis-plus 生成,配置可视化
+
+
+
+
+
+
### 6. 网络工具
#### 6.1 websocket 工具
diff --git a/pom.xml b/pom.xml
index d49bb9b..4a00d34 100644
--- a/pom.xml
+++ b/pom.xml
@@ -300,6 +300,19 @@
freemarker
2.3.31
+
+
+ com.baomidou
+ mybatis-plus-generator
+ 3.5.1
+
+
+
+ com.baomidou
+ mybatis-plus
+ 3.5.2
+
+
diff --git a/src/main/java/com/zhangmeng/tools/controller/CodecToolsController.java b/src/main/java/com/zhangmeng/tools/controller/CodecToolsController.java
index f8fe3c5..b3646e0 100644
--- a/src/main/java/com/zhangmeng/tools/controller/CodecToolsController.java
+++ b/src/main/java/com/zhangmeng/tools/controller/CodecToolsController.java
@@ -550,4 +550,8 @@ public class CodecToolsController {
public void telephone_menu_item(ActionEvent event) {
load_small_tools(8);
}
+
+ public void mybatis_plus_gen_menu_item(ActionEvent event) {
+ load_sql_tools(1);
+ }
}
diff --git a/src/main/java/com/zhangmeng/tools/controller/HomeController.java b/src/main/java/com/zhangmeng/tools/controller/HomeController.java
index 2cc7d84..b0b192d 100644
--- a/src/main/java/com/zhangmeng/tools/controller/HomeController.java
+++ b/src/main/java/com/zhangmeng/tools/controller/HomeController.java
@@ -475,4 +475,8 @@ public class HomeController implements Serializable {
public void telephone_menu_item(ActionEvent event) {
load_small_tools(8);
}
+
+ public void mybatis_plus_gen_menu_item(ActionEvent event) {
+ load_sql_tools(1);
+ }
}
\ No newline at end of file
diff --git a/src/main/java/com/zhangmeng/tools/controller/HttpToolsController.java b/src/main/java/com/zhangmeng/tools/controller/HttpToolsController.java
index c05df92..8984763 100644
--- a/src/main/java/com/zhangmeng/tools/controller/HttpToolsController.java
+++ b/src/main/java/com/zhangmeng/tools/controller/HttpToolsController.java
@@ -486,4 +486,8 @@ public class HttpToolsController {
public void telephone_menu_item(ActionEvent event) {
load_small_tools(8);
}
+
+ public void mybatis_plus_gen_menu_item(ActionEvent event) {
+ load_sql_tools(1);
+ }
}
diff --git a/src/main/java/com/zhangmeng/tools/controller/MybatisPlusGenerator.java b/src/main/java/com/zhangmeng/tools/controller/MybatisPlusGenerator.java
new file mode 100644
index 0000000..4347b9d
--- /dev/null
+++ b/src/main/java/com/zhangmeng/tools/controller/MybatisPlusGenerator.java
@@ -0,0 +1,361 @@
+package com.zhangmeng.tools.controller;
+
+import cn.hutool.core.text.StrFormatter;
+import com.alibaba.druid.pool.DruidDataSource;
+import com.baomidou.mybatisplus.generator.FastAutoGenerator;
+import com.baomidou.mybatisplus.generator.config.OutputFile;
+import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
+import com.zhangmeng.tools.dto.BeanField;
+import com.zhangmeng.tools.dto.GenerateDetail;
+import com.zhangmeng.tools.utils.AlertUtils;
+import com.zhangmeng.tools.utils.TemplateUtil;
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+import javafx.fxml.FXML;
+import javafx.geometry.Pos;
+import javafx.scene.control.*;
+import javafx.scene.layout.HBox;
+import javafx.util.Callback;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.util.CollectionUtils;
+
+import javax.sound.sampled.Port;
+import java.math.BigDecimal;
+import java.util.*;
+
+/**
+ * @author : 芊芊墨客
+ * @version : 1.0
+ * @date : 2023-03-22 14:03
+ */
+@Slf4j
+public class MybatisPlusGenerator {
+
+ @FXML
+ public TextField url;
+
+ @FXML
+ public TextField username;
+
+ @FXML
+ public TextField password;
+
+ @FXML
+ public TextField author;
+
+ @FXML
+ public TextField out_dir;
+
+ @FXML
+ public TextField prefix;
+
+ @FXML
+ public TextField mapper_xml_path;
+
+ @FXML
+ public TextField model_name;
+
+ @FXML
+ public TextField parent_package;
+
+ @FXML
+ public Button generator;
+
+ @FXML
+ private TextField port;
+
+ @FXML
+ private ComboBox comboBox_data_base;
+
+ @FXML
+ private TextField data_base;
+
+ @FXML
+ public ListView listView;
+
+ private final ObservableList data_base_list = FXCollections.observableArrayList();
+ private final ObservableList table_list = FXCollections.observableArrayList();
+
+ private JdbcTemplate jdbcTemplate;
+
+ @FXML
+ public void initialize() {
+
+ if (url.getText().length() == 0) {
+ url.setText("localhost");
+ }
+
+ if (username.getText().length() == 0) {
+ username.setText("root");
+ }
+
+ if (port.getText().length() == 0) {
+ port.setText("3306");
+ }
+
+ if (password.getText().length() == 0) {
+ password.setText("root");
+ }
+
+ if (author.getText().length() == 0) {
+ author.setText("zhangmeng");
+ }
+
+ if (out_dir.getText().length() == 0) {
+ out_dir.setText("D:\\mybatis_gen");
+ }
+
+ if (prefix.getText().length() == 0) {
+ prefix.setText("dashidao,t");
+ }
+
+ if (mapper_xml_path.getText().length() == 0) {
+ mapper_xml_path.setText("D:\\mybatis_gen\\mapper");
+ }
+
+ if (model_name.getText().length() == 0) {
+ model_name.setText("server");
+ }
+
+ if (parent_package.getText().length() == 0) {
+ parent_package.setText("com.zhangmeng");
+ }
+
+ comboBox_data_base.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
+ if (newValue != null) {
+ log.info("选择的数据库名为:{}", newValue);
+ data_base.setText(newValue);
+ update_select_data_base();
+ }
+ });
+
+ listView.setItems(table_list);
+ listView.setFixedCellSize(40);
+ listView.getSelectionModel().select(0);
+ listView.setCellFactory(new Callback<>() {
+ @Override
+ public ListCell call(ListView param) {
+ return new ListCell<>() {
+ @Override
+ protected void updateItem(String item, boolean empty) {
+ super.updateItem(item, empty);
+ if (!empty) {
+ HBox hBox = new HBox();
+ hBox.setAlignment(Pos.CENTER);
+ hBox.getChildren().add(new Label(item));
+ this.setGraphic(hBox);
+ }
+ }
+ };
+ }
+ });
+
+ generator.setOnAction(event -> {
+
+ String ur1 = getUrl(url.getText(), Integer.parseInt(port.getText()), data_base.getText());
+ DataSourceInfo dataSourceInfo = new DataSourceInfo();
+ dataSourceInfo.setUrl(ur1);
+ dataSourceInfo.setUsername(username.getText());
+ dataSourceInfo.setPassword(password.getText());
+ dataSourceInfo.setAuthor(author.getText());
+ dataSourceInfo.setOut_dir(out_dir.getText());
+ dataSourceInfo.setParent_package_name(parent_package.getText());
+ dataSourceInfo.setParent_module_name(model_name.getText());
+ dataSourceInfo.setMapper_xml_path(mapper_xml_path.getText());
+ String text = prefix.getText();
+ String[] prefixes = text.split(",");
+ dataSourceInfo.setTable_prefixes(prefixes);
+ List tables = new ArrayList<>(table_list);
+ dataSourceInfo.setTables(tables);
+ generator(dataSourceInfo);
+ AlertUtils.alert_msg("生成成功!");
+ });
+ }
+
+ @FXML
+ public void get_all_data_base() {
+ log.info("获取所有数据表.....");
+ data_base_list.clear();
+ getJdbcTemplate();
+ List