diff --git a/src/main/java/com/zhangmeng/tools/controller/GoToolsController.java b/src/main/java/com/zhangmeng/tools/controller/GoToolsController.java index b65e0e0..094c01a 100644 --- a/src/main/java/com/zhangmeng/tools/controller/GoToolsController.java +++ b/src/main/java/com/zhangmeng/tools/controller/GoToolsController.java @@ -40,6 +40,7 @@ public class GoToolsController implements Serializable { private SimpleDoubleProperty height = new SimpleDoubleProperty(0.0); private AnchorPane root; private AnchorPane json_to_struct; + private AnchorPane mysql_to_struct; public static final String color_cell = "#f4f4f4"; @@ -254,10 +255,34 @@ public class GoToolsController implements Serializable { } json_to_struct(flag); } + + if (newValue.getIndex() == 1) { + if (mysql_to_struct != null){ + flag = true; + } + mysql_to_struct(flag); + } } }); } + private void mysql_to_struct(boolean flag) { + //默认选择第一个 + listView.getSelectionModel().select(1); + + if (!flag){ + try { + root = FXMLLoader.load(ResourcesUtils.getResource("mysql-to-struct")); + } catch (IOException e) { + e.printStackTrace(); + } + mysql_to_struct = root; + }else { + root = mysql_to_struct; + } + common_method(); + } + private void json_to_struct(boolean flag){ //默认选择第一个 listView.getSelectionModel().select(0); @@ -278,6 +303,7 @@ public class GoToolsController implements Serializable { public static Image getImage(ResourcesUtils.GoTools player){ return switch (player){ case Json_Struct -> new Image(ImagePath.path(ImagePath.ImagePathType.MD5)); + case Mysql_Struct -> new Image(ImagePath.path(ImagePath.ImagePathType.MD5)); }; } diff --git a/src/main/java/com/zhangmeng/tools/controller/HomeController.java b/src/main/java/com/zhangmeng/tools/controller/HomeController.java index cc0031b..61a9aeb 100644 --- a/src/main/java/com/zhangmeng/tools/controller/HomeController.java +++ b/src/main/java/com/zhangmeng/tools/controller/HomeController.java @@ -685,4 +685,8 @@ public class HomeController implements Serializable { public void excel_read_menu_item(ActionEvent actionEvent) { load_small_tools(21); } + + public void mysql_to_struct_menu_item(ActionEvent actionEvent) { + load_go_tools(1); + } } \ No newline at end of file diff --git a/src/main/java/com/zhangmeng/tools/controller/MySQLToStructController.java b/src/main/java/com/zhangmeng/tools/controller/MySQLToStructController.java new file mode 100644 index 0000000..8353332 --- /dev/null +++ b/src/main/java/com/zhangmeng/tools/controller/MySQLToStructController.java @@ -0,0 +1,332 @@ +package com.zhangmeng.tools.controller; + +import com.alibaba.druid.pool.DruidDataSource; +import com.zhangmeng.tools.dto.BeanField; +import com.zhangmeng.tools.dto.GenerateDetail; +import com.zhangmeng.tools.dto.GenerateInput; +import com.zhangmeng.tools.utils.AlertUtils; +import com.zhangmeng.tools.utils.TemplateUtil; +import javafx.beans.property.SimpleObjectProperty; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import javafx.scene.control.*; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.control.cell.TextFieldTableCell; +import lombok.extern.slf4j.Slf4j; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.core.RowMapper; +import org.springframework.util.CollectionUtils; + +import java.math.BigDecimal; +import java.util.*; + +@Slf4j +public class MySQLToStructController { + + @FXML + public TextArea struct_view; + + private JdbcTemplate jdbcTemplate; + + /** + * mysql类型与java类型部分对应关系 + */ + private static Map map = new HashMap<>(); + + static { + map.put("int", "int"); + map.put("tinyint", "int8"); + map.put("double", "float64"); + map.put("float", "float32"); + map.put("decimal", "big.Float"); + map.put("date", "time.Time"); + map.put("timestamp", "time.Time"); + map.put("datetime", "time.Time"); + map.put("varchar", "string"); + map.put("text", "string"); + map.put("longtext", "string"); + map.put("bit", "bool"); + map.put("bigint", "int64"); + + } + + @FXML + private TextField table_name; + + @FXML + public void preview_code() { + String text = data_base.getText(); + if (text.length() == 0) { + AlertUtils.alert_warning("请输入数据库名!"); + return; + } + + String table = table_name.getText(); + if (table.length() == 0) { + AlertUtils.alert_warning("请输入表名!"); + return; + } + GenerateDetail generateDetail = generateByTableName(table); + log.info("generateDetail:{}", generateDetail); + assignment_to_filed(generateDetail); + bean_info.set(generateDetail); + } + + private TextField bean_class_name_field; + + private TextField bean_package_name_field; + + @FXML + private TableColumn column_name; + + @FXML + private TableColumn column_type; + + @FXML + private TableColumn bean_field_name; + + @FXML + private TableColumn bean_field_type; + + @FXML + private TableColumn bean_field_value; + + @FXML + private TableView tableView; + + public ObservableList list = FXCollections.observableArrayList(); + + @FXML + private TextField username; + + @FXML + private TextField password; + + @FXML + private TextField data_base; + + @FXML + private TextField ip_address; + + @FXML + private TextField port; + + @FXML + private ComboBox comboBox_table; + + @FXML + private ComboBox comboBox_data_base; + + private SimpleObjectProperty bean_info = new SimpleObjectProperty<>(); + + private ObservableList table_list = FXCollections.observableArrayList(); + private ObservableList data_base_list = FXCollections.observableArrayList(); + public static final String bean_package_name = "models"; + + @FXML + public void initialize() { + bean_class_name_field = new TextField(); + bean_package_name_field = new TextField(); + username.setText("root"); + password.setText("root"); + ip_address.setText("localhost"); + port.setText("3306"); + tableView.setFixedCellSize(30); + tableView.getSelectionModel().setSelectionMode(SelectionMode.SINGLE); + tableView.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> { + if (newValue != null) { + System.out.println(newValue.getName()); + } + }); + column_name.setCellFactory(TextFieldTableCell.forTableColumn()); + column_name.setCellValueFactory(new PropertyValueFactory<>("columnName")); + + column_type.setCellFactory(TextFieldTableCell.forTableColumn()); + column_type.setCellValueFactory(new PropertyValueFactory<>("columnType")); + + bean_field_name.setCellFactory(TextFieldTableCell.forTableColumn()); + bean_field_name.setCellValueFactory(new PropertyValueFactory<>("name")); + + bean_field_type.setCellFactory(TextFieldTableCell.forTableColumn()); + bean_field_type.setCellValueFactory(new PropertyValueFactory<>("type")); + + bean_field_value.setCellFactory(TextFieldTableCell.forTableColumn()); + bean_field_value.setCellValueFactory(new PropertyValueFactory<>("columnDefault")); + tableView.setItems(list); + + double width = tableView.getPrefWidth() / tableView.getColumns().size() + 100; + column_name.setPrefWidth(width); + column_type.setPrefWidth(width); + bean_field_name.setPrefWidth(width); + bean_field_type.setPrefWidth(width); + bean_field_value.setPrefWidth(width); + + comboBox_table.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> { + if (newValue != null) { + log.info("选择的表名为:{}", newValue); + table_name.setText(newValue); + } + }); + + comboBox_data_base.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> { + if (newValue != null) { + log.info("选择的数据库名为:{}", newValue); + data_base.setText(newValue); + update_select_data_base(); + } + }); + } + + private void update_select_data_base() { + String text = data_base.getText(); + getJdbcTemplate(); + log.info("update_select_data_base:{}", text); + this.jdbcTemplate.execute("use `" + text + "`"); + } + + @FXML + public void get_all_data_base() { + log.info("获取所有数据表....."); + data_base_list.clear(); + getJdbcTemplate(); + List> maps = this.jdbcTemplate.queryForList("show databases"); + for (Map map : maps) { + log.info("map->{}", map.toString()); + data_base_list.add(map.get("Database").toString()); + } + comboBox_data_base.setItems(data_base_list); + comboBox_data_base.getSelectionModel().select(0); + data_base.setText(comboBox_data_base.getSelectionModel().getSelectedItem()); + } + + @FXML + public void save_code() { + log.info("代码生成保存!"); + GenerateDetail generateDetail = bean_info.getValue(); + if (generateDetail == null) { + AlertUtils.alert_warning("请预览之后在进行操作!"); + return; + } +// assignment_to_filed(generateDetail); + GenerateInput generateInput = new GenerateInput(); + generateInput.setTableName(generateDetail.getTableName()); + + generateInput.setBeanName(bean_class_name_field.getText()); + generateInput.setBeanPackageName(bean_package_name_field.getText()); + + List fields = generateDetail.getFields(); + List beanFieldName = new ArrayList<>(); + List beanFieldType = new ArrayList<>(); + List beanFieldValue = new ArrayList<>(); + List columnNames = new ArrayList<>(); + for (BeanField field : fields) { + beanFieldName.add(field.getName()); + beanFieldType.add(field.getType()); + beanFieldValue.add(field.getColumnDefault()); + columnNames.add(field.getColumnName()); + } + + generateInput.setBeanFieldName(beanFieldName); + generateInput.setBeanFieldType(beanFieldType); + generateInput.setBeanFieldValue(beanFieldValue); + generateInput.setColumnNames(columnNames); + + String txt =TemplateUtil.saveStruct(generateInput); + struct_view.setText(txt); + log.info("生成成功!"); + //清空 + bean_info.setValue(null); + } + + @FXML + public void fetch_table() { + table_list.clear(); + getJdbcTemplate(); + List> maps = this.jdbcTemplate.queryForList("SELECT table_name, table_type, TABLE_COMMENT FROM information_schema.tables WHERE table_schema = (select database()) ORDER BY table_name DESC"); + for (Map map : maps) { + String table_name = (String) map.get("table_name"); + log.info("table_name:{}", table_name); + table_list.add(table_name); + } + comboBox_table.setItems(table_list); + comboBox_table.getSelectionModel().select(0); + } + + private void assignment_to_filed(GenerateDetail generateDetail) { + String bean_class_name = generateDetail.getBeanName(); + bean_class_name_field.setText(bean_class_name); + bean_package_name_field.setText(bean_package_name); + list.clear(); + List fields = generateDetail.getFields(); + list.addAll(fields); + } + + public JdbcTemplate getJdbcTemplate() { + if (jdbcTemplate == null) { + jdbcTemplate = new JdbcTemplate(); + + DruidDataSource datasource = new DruidDataSource(); + String url = "jdbc:mysql://" + ip_address.getText() + ":" + port.getText() + "/" + data_base.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); + } + return jdbcTemplate; + } + + private RowMapper beanFieldMapper = (rs, paramInt) -> { + BeanField beanField = new BeanField(); + beanField.setColumnName(rs.getString("column_name")); + beanField.setColumnType(rs.getString("data_type")); + beanField.setColumnComment(rs.getString("column_comment")); + beanField.setColumnDefault(rs.getString("column_default")); + return beanField; + }; + + public GenerateDetail generateByTableName(String tableName) { + GenerateDetail detail = new GenerateDetail(); + detail.setBeanName(upperFirstChar(tableName)); + List fields = listBeanField(tableName); + detail.setFields(fields); + detail.setTableName(tableName); + return detail; + } + + public List listBeanField(String tableName) { + getJdbcTemplate(); + List beanFields = jdbcTemplate.query("select column_name, data_type, column_comment, column_default FROM information_schema.columns WHERE table_name= ? and table_schema = (select database())", new String[]{tableName}, beanFieldMapper); + if (CollectionUtils.isEmpty(beanFields)) { + AlertUtils.alert_warning("表" + tableName + "不存在"); + throw new IllegalArgumentException("表" + tableName + "不存在"); + } + + beanFields.parallelStream().forEach(b -> { + b.setName(TemplateUtil.str2hump(b.getColumnName())); + String type = map.get(b.getColumnType()); + if (type == null) { + type = "string"; + } + b.setType(type); + if ("id".equals(b.getName())) { + b.setType("int64"); + } + + b.setColumnDefault(b.getColumnDefault() == null ? "" : b.getColumnDefault()); + }); + + return beanFields; + } + + public String upperFirstChar(String string) { + String name = TemplateUtil.str2hump(string); + String firstChar = name.substring(0, 1); + name = name.replaceFirst(firstChar, firstChar.toUpperCase()); + return name; + } + +} diff --git a/src/main/java/com/zhangmeng/tools/utils/ResourcesUtils.java b/src/main/java/com/zhangmeng/tools/utils/ResourcesUtils.java index 8ada6ac..ca3bb90 100644 --- a/src/main/java/com/zhangmeng/tools/utils/ResourcesUtils.java +++ b/src/main/java/com/zhangmeng/tools/utils/ResourcesUtils.java @@ -333,6 +333,7 @@ public class ResourcesUtils { public enum GoTools { Json_Struct("json生成结构体", 0), + Mysql_Struct("mysql生成结构体", 1), ; GoTools(String title, int index) { diff --git a/src/main/java/com/zhangmeng/tools/utils/TemplateUtil.java b/src/main/java/com/zhangmeng/tools/utils/TemplateUtil.java index d539c3c..55613ff 100644 --- a/src/main/java/com/zhangmeng/tools/utils/TemplateUtil.java +++ b/src/main/java/com/zhangmeng/tools/utils/TemplateUtil.java @@ -38,52 +38,55 @@ import java.util.List; public class TemplateUtil { - private static final Logger log = LoggerFactory.getLogger("adminLogger"); + private static final Logger log = LoggerFactory.getLogger("adminLogger"); - public static String getTemplete(String fileName) { - return FileUtil.getText(TemplateUtil.class.getClassLoader().getResourceAsStream("generate/" + fileName)); - } + public static String getTemplete(String fileName) { + return FileUtil.getText(TemplateUtil.class.getClassLoader().getResourceAsStream("generate/" + fileName)); + } - public static void saveJava(GenerateInput input) { - String path = input.getPath(); - String beanPackageName = input.getBeanPackageName(); - String beanName = input.getBeanName(); - List beanFieldName = input.getBeanFieldName(); - List beanFieldType = input.getBeanFieldType(); - List beanFieldValue = input.getBeanFieldValue(); + public static String getTemplete(String fileName, String path) { + return FileUtil.getText(TemplateUtil.class.getClassLoader().getResourceAsStream(path + "/" + fileName)); + } - String text = getTemplete("java.txt"); - text = text.replace("{beanPackageName}", beanPackageName).replace("{beanName}", beanName); + public static void saveJava(GenerateInput input) { + String path = input.getPath(); + String beanPackageName = input.getBeanPackageName(); + String beanName = input.getBeanName(); + List beanFieldName = input.getBeanFieldName(); + List beanFieldType = input.getBeanFieldType(); + List beanFieldValue = input.getBeanFieldValue(); - String imports = ""; - if (beanFieldType.contains(BigDecimal.class.getSimpleName())) { - imports += "import " + BigDecimal.class.getName() + ";\n"; - } - if (beanFieldType.contains(Date.class.getSimpleName())) { - imports += "import " + Date.class.getName() + ";"; - } + String text = getTemplete("java.txt"); + text = text.replace("{beanPackageName}", beanPackageName).replace("{beanName}", beanName); - text = text.replace("{import}", imports); - String filelds = getFields(beanFieldName, beanFieldType, beanFieldValue); - text = text.replace("{filelds}", filelds); - text = text.replace("{getset}", getset(beanFieldName, beanFieldType)); + String imports = ""; + if (beanFieldType.contains(BigDecimal.class.getSimpleName())) { + imports += "import " + BigDecimal.class.getName() + ";\n"; + } + if (beanFieldType.contains(Date.class.getSimpleName())) { + imports += "import " + Date.class.getName() + ";"; + } - FileUtil.saveTextFile(text, path + File.separator + getPackagePath(beanPackageName) + beanName + ".java"); - log.debug("生成java model:{}模板", beanName); - } + text = text.replace("{import}", imports); + String filelds = getFields(beanFieldName, beanFieldType, beanFieldValue); + text = text.replace("{filelds}", filelds); + text = text.replace("{getset}", getset(beanFieldName, beanFieldType)); - private static String getFields(List beanFieldName, List beanFieldType, - List beanFieldValue) { - StringBuffer buffer = new StringBuffer(); - int size = beanFieldName.size(); - for (int i = 0; i < size; i++) { - String name = beanFieldName.get(i); - if ("id".equals(name) || "createTime".equals(name) || "updateTime".equals(name)) { - continue; - } - String type = beanFieldType.get(i); - buffer.append("\tprivate ").append(type).append(" ").append(name); - // 默认值 + FileUtil.saveTextFile(text, path + File.separator + getPackagePath(beanPackageName) + beanName + ".java"); + log.debug("生成java model:{}模板", beanName); + } + + private static String getFields(List beanFieldName, List beanFieldType, List beanFieldValue) { + StringBuffer buffer = new StringBuffer(); + int size = beanFieldName.size(); + for (int i = 0; i < size; i++) { + String name = beanFieldName.get(i); + if ("id".equals(name) || "createTime".equals(name) || "updateTime".equals(name)) { + continue; + } + String type = beanFieldType.get(i); + buffer.append("\tprivate ").append(type).append(" ").append(name); + // 默认值 // String value = beanFieldValue.get(i); // if (!StringUtils.isEmpty(value)) { // buffer.append(" = "); @@ -99,287 +102,323 @@ public class TemplateUtil { // // buffer.append(value); // } - buffer.append(";\n"); - } + buffer.append(";\n"); + } - return buffer.toString(); - } + return buffer.toString(); + } - private static String getset(List beanFieldName, List beanFieldType) { - StringBuffer buffer = new StringBuffer(); - int size = beanFieldName.size(); - for (int i = 0; i < size; i++) { - String name = beanFieldName.get(i); - if ("id".equals(name) || "createTime".equals(name) || "updateTime".equals(name)) { - continue; - } + private static String getFields_go(List beanFieldName, List beanFieldType,List columnNames) { + StringBuffer buffer = new StringBuffer(); + int size = beanFieldName.size(); + for (int i = 0; i < size; i++) { + String name = beanFieldName.get(i); + if ("createTime".equals(name) || "updateTime".equals(name)) { + continue; + } + String type = beanFieldType.get(i); + String co_name = columnNames.get(i); + buffer.append("\n").append("\t").append(upperFirstChar(name)).append(" ").append(type).append(" ").append("`json:\"" + co_name +"\"`"); + buffer.append("\n"); + } - String type = beanFieldType.get(i); - buffer.append("\tpublic ").append(type).append(" get") - .append(StringUtils.substring(name, 0, 1).toUpperCase() + name.substring(1, name.length())) - .append("() {\n"); - buffer.append("\t\treturn ").append(name).append(";\n"); - buffer.append("\t}\n"); - buffer.append("\tpublic void set") - .append(StringUtils.substring(name, 0, 1).toUpperCase() + name.substring(1, name.length())) - .append("(").append(type).append(" ").append(name).append(") {\n"); - buffer.append("\t\tthis.").append(name).append(" = ").append(name).append(";\n"); - buffer.append("\t}\n"); - } + return buffer.toString(); + } - return buffer.toString(); - } + private static String getset(List beanFieldName, List beanFieldType) { + StringBuffer buffer = new StringBuffer(); + int size = beanFieldName.size(); + for (int i = 0; i < size; i++) { + String name = beanFieldName.get(i); + if ("id".equals(name) || "createTime".equals(name) || "updateTime".equals(name)) { + continue; + } - public static void saveJavaDao(GenerateInput input) { - String path = input.getPath(); - String tableName = input.getTableName(); - String beanPackageName = input.getBeanPackageName(); - String beanName = input.getBeanName(); - String daoPackageName = input.getDaoPackageName(); - String daoName = input.getDaoName(); + String type = beanFieldType.get(i); + buffer.append("\tpublic ").append(type).append(" get").append(StringUtils.substring(name, 0, 1).toUpperCase() + name.substring(1, name.length())).append("() {\n"); + buffer.append("\t\treturn ").append(name).append(";\n"); + buffer.append("\t}\n"); + buffer.append("\tpublic void set").append(StringUtils.substring(name, 0, 1).toUpperCase() + name.substring(1, name.length())).append("(").append(type).append(" ").append(name).append(") {\n"); + buffer.append("\t\tthis.").append(name).append(" = ").append(name).append(";\n"); + buffer.append("\t}\n"); + } - String text = getTemplete("dao.txt"); - text = text.replace("{daoPackageName}", daoPackageName); - text = text.replace("{beanPackageName}", beanPackageName); - text = text.replace("{daoName}", daoName); - text = text.replace("{table_name}", tableName); - text = text.replace("{beanName}", beanName); - text = text.replace("{beanParamName}", lowerFirstChar(beanName)); + return buffer.toString(); + } - String insertColumns = getInsertColumns(input.getColumnNames()); - text = text.replace("{insert_columns}", insertColumns); - String insertValues = getInsertValues(input.getColumnNames(), input.getBeanFieldName()); - text = text.replace("{insert_values}", insertValues); - FileUtil.saveTextFile(text, path + File.separator + getPackagePath(daoPackageName) + daoName + ".java"); - log.debug("生成java dao:{}模板", beanName); + public static void saveJavaDao(GenerateInput input) { + String path = input.getPath(); + String tableName = input.getTableName(); + String beanPackageName = input.getBeanPackageName(); + String beanName = input.getBeanName(); + String daoPackageName = input.getDaoPackageName(); + String daoName = input.getDaoName(); - text = getTemplete("mapper.xml"); - text = text.replace("{daoPackageName}", daoPackageName); - text = text.replace("{daoName}", daoName); - text = text.replace("{table_name}", tableName); - text = text.replace("{beanName}", beanName); - String sets = getUpdateSets(input.getColumnNames(), input.getBeanFieldName()); - text = text.replace("{update_sets}", sets); - String where = getWhere(input.getColumnNames(), input.getBeanFieldName()); - text = text.replace("{where}", where); - FileUtil.saveTextFile(text, path + File.separator + beanName + "Mapper.xml"); - } + String text = getTemplete("dao.txt"); + text = text.replace("{daoPackageName}", daoPackageName); + text = text.replace("{beanPackageName}", beanPackageName); + text = text.replace("{daoName}", daoName); + text = text.replace("{table_name}", tableName); + text = text.replace("{beanName}", beanName); + text = text.replace("{beanParamName}", lowerFirstChar(beanName)); - private static String getInsertValues(List columnNames, List beanFieldName) { - StringBuffer buffer = new StringBuffer(); - int size = columnNames.size(); - for (int i = 0; i < size; i++) { - String column = columnNames.get(i); - if (!"id".equals(column)) { - buffer.append("#{").append(beanFieldName.get(i)).append("}, "); - } - } + String insertColumns = getInsertColumns(input.getColumnNames()); + text = text.replace("{insert_columns}", insertColumns); + String insertValues = getInsertValues(input.getColumnNames(), input.getBeanFieldName()); + text = text.replace("{insert_values}", insertValues); + FileUtil.saveTextFile(text, path + File.separator + getPackagePath(daoPackageName) + daoName + ".java"); + log.debug("生成java dao:{}模板", beanName); - String sets = StringUtils.substringBeforeLast(buffer.toString(), ","); - return sets; - } + text = getTemplete("mapper.xml"); + text = text.replace("{daoPackageName}", daoPackageName); + text = text.replace("{daoName}", daoName); + text = text.replace("{table_name}", tableName); + text = text.replace("{beanName}", beanName); + String sets = getUpdateSets(input.getColumnNames(), input.getBeanFieldName()); + text = text.replace("{update_sets}", sets); + String where = getWhere(input.getColumnNames(), input.getBeanFieldName()); + text = text.replace("{where}", where); + FileUtil.saveTextFile(text, path + File.separator + beanName + "Mapper.xml"); + } - private static String getInsertColumns(List columnNames) { - StringBuffer buffer = new StringBuffer(); - int size = columnNames.size(); - for (int i = 0; i < size; i++) { - String column = columnNames.get(i); - if (!"id".equals(column)) { - buffer.append(column).append(", "); - } - } + private static String getInsertValues(List columnNames, List beanFieldName) { + StringBuffer buffer = new StringBuffer(); + int size = columnNames.size(); + for (int i = 0; i < size; i++) { + String column = columnNames.get(i); + if (!"id".equals(column)) { + buffer.append("#{").append(beanFieldName.get(i)).append("}, "); + } + } - String insertColumns = StringUtils.substringBeforeLast(buffer.toString(), ","); - return insertColumns; - } + String sets = StringUtils.substringBeforeLast(buffer.toString(), ","); + return sets; + } - private static String getUpdateSets(List columnNames, List beanFieldName) { - StringBuffer buffer = new StringBuffer(); - int size = columnNames.size(); - for (int i = 0; i < size; i++) { - String column = columnNames.get(i); - if (!"id".equals(column)) { - buffer.append("\t\t\t\n"); - buffer.append("\t\t\t\t" + column).append(" = ").append("#{").append(beanFieldName.get(i)) - .append("}, \n"); - buffer.append("\t\t\t\n"); - } - } + private static String getInsertColumns(List columnNames) { + StringBuffer buffer = new StringBuffer(); + int size = columnNames.size(); + for (int i = 0; i < size; i++) { + String column = columnNames.get(i); + if (!"id".equals(column)) { + buffer.append(column).append(", "); + } + } - return buffer.toString(); - } + String insertColumns = StringUtils.substringBeforeLast(buffer.toString(), ","); + return insertColumns; + } - private static String getWhere(List columnNames, List beanFieldName) { - StringBuffer buffer = new StringBuffer(); - int size = columnNames.size(); - for (int i = 0; i < size; i++) { - String column = columnNames.get(i); - buffer.append("\t\t\t\n"); - buffer.append("\t\t\t\tand " + column).append(" = ").append("#{params.").append(beanFieldName.get(i)) - .append("} \n"); - buffer.append("\t\t\t\n"); - } + private static String getUpdateSets(List columnNames, List beanFieldName) { + StringBuffer buffer = new StringBuffer(); + int size = columnNames.size(); + for (int i = 0; i < size; i++) { + String column = columnNames.get(i); + if (!"id".equals(column)) { + buffer.append("\t\t\t\n"); + buffer.append("\t\t\t\t" + column).append(" = ").append("#{").append(beanFieldName.get(i)).append("}, \n"); + buffer.append("\t\t\t\n"); + } + } - return buffer.toString(); - } + return buffer.toString(); + } - /** - * 变量名 - * - * @param beanName - * @return - */ - public static String lowerFirstChar(String beanName) { - String name = str2hump(beanName); - String firstChar = name.substring(0, 1); - name = name.replaceFirst(firstChar, firstChar.toLowerCase()); + private static String getWhere(List columnNames, List beanFieldName) { + StringBuffer buffer = new StringBuffer(); + int size = columnNames.size(); + for (int i = 0; i < size; i++) { + String column = columnNames.get(i); + buffer.append("\t\t\t\n"); + buffer.append("\t\t\t\tand " + column).append(" = ").append("#{params.").append(beanFieldName.get(i)).append("} \n"); + buffer.append("\t\t\t\n"); + } - return name; - } + return buffer.toString(); + } - /** - * 字符串转为驼峰 - * - * @param str - * @return - */ - public static String str2hump(String str) { - StringBuffer buffer = new StringBuffer(); - if (str != null && str.length() > 0) { - if (str.contains("_")) { - String[] chars = str.split("_"); - int size = chars.length; - if (size > 0) { - List list = new ArrayList<>(); - for (String s : chars) { - if (s != null && s.trim().length() > 0) { - list.add(s); - } - } + /** + * 变量名 + * + * @param beanName + * @return + */ + public static String lowerFirstChar(String beanName) { + String name = str2hump(beanName); + String firstChar = name.substring(0, 1); + name = name.replaceFirst(firstChar, firstChar.toLowerCase()); - size = list.size(); - if (size > 0) { - buffer.append(list.get(0)); - for (int i = 1; i < size; i++) { - String s = list.get(i); - buffer.append(s.substring(0, 1).toUpperCase()); - if (s.length() > 1) { - buffer.append(s.substring(1)); - } - } - } - } - } else { - buffer.append(str); - } - } + return name; + } - return buffer.toString(); - } + /** + * 字符串转为驼峰 + * + * @param str + * @return + */ + public static String str2hump(String str) { + StringBuffer buffer = new StringBuffer(); + if (str != null && str.length() > 0) { + if (str.contains("_")) { + String[] chars = str.split("_"); + int size = chars.length; + if (size > 0) { + List list = new ArrayList<>(); + for (String s : chars) { + if (s != null && s.trim().length() > 0) { + list.add(s); + } + } + + size = list.size(); + if (size > 0) { + buffer.append(list.get(0)); + for (int i = 1; i < size; i++) { + String s = list.get(i); + buffer.append(s.substring(0, 1).toUpperCase()); + if (s.length() > 1) { + buffer.append(s.substring(1)); + } + } + } + } + } else { + buffer.append(str); + } + } + + return buffer.toString(); + } - private static String getPackagePath(String packageName) { - String packagePath = packageName.replace(".", "/"); - if (!packagePath.endsWith("/")) { - packagePath = packagePath + "/"; - } + private static String getPackagePath(String packageName) { + String packagePath = packageName.replace(".", "/"); + if (!packagePath.endsWith("/")) { + packagePath = packagePath + "/"; + } - return packagePath; - } + return packagePath; + } - public static void saveController(GenerateInput input) { - String path = input.getPath(); - String beanPackageName = input.getBeanPackageName(); - String beanName = input.getBeanName(); - String daoPackageName = input.getDaoPackageName(); - String daoName = input.getDaoName(); + public static void saveController(GenerateInput input) { + String path = input.getPath(); + String beanPackageName = input.getBeanPackageName(); + String beanName = input.getBeanName(); + String daoPackageName = input.getDaoPackageName(); + String daoName = input.getDaoName(); - String text = getTemplete("controller.txt"); - text = text.replace("{daoPackageName}", daoPackageName); - text = text.replace("{beanPackageName}", beanPackageName); - text = text.replace("{daoName}", daoName); - text = text.replace("{daoParamName}", lowerFirstChar(daoName)); - text = text.replace("{beanName}", beanName); - text = text.replace("{beanParamName}", lowerFirstChar(beanName)); - text = text.replace("{controllerPkgName}", input.getControllerPkgName()); - text = text.replace("{controllerName}", input.getControllerName()); + String text = getTemplete("controller.txt"); + text = text.replace("{daoPackageName}", daoPackageName); + text = text.replace("{beanPackageName}", beanPackageName); + text = text.replace("{daoName}", daoName); + text = text.replace("{daoParamName}", lowerFirstChar(daoName)); + text = text.replace("{beanName}", beanName); + text = text.replace("{beanParamName}", lowerFirstChar(beanName)); + text = text.replace("{controllerPkgName}", input.getControllerPkgName()); + text = text.replace("{controllerName}", input.getControllerName()); - FileUtil.saveTextFile(text, path + File.separator + getPackagePath(input.getControllerPkgName()) - + input.getControllerName() + ".java"); - log.debug("生成controller:{}模板", beanName); - } + FileUtil.saveTextFile(text, path + File.separator + getPackagePath(input.getControllerPkgName()) + input.getControllerName() + ".java"); + log.debug("生成controller:{}模板", beanName); + } - public static void saveHtmlList(GenerateInput input) { - String path = input.getPath(); - String beanName = input.getBeanName(); - String beanParamName = lowerFirstChar(beanName); + public static void saveHtmlList(GenerateInput input) { + String path = input.getPath(); + String beanName = input.getBeanName(); + String beanParamName = lowerFirstChar(beanName); - String text = getTemplete("htmlList.txt"); - text = text.replace("{beanParamName}", beanParamName); - text = text.replace("{beanName}", beanName); - List beanFieldNames = input.getBeanFieldName(); - text = text.replace("{columnsDatas}", getHtmlColumnsDatas(beanFieldNames)); - text = text.replace("{ths}", getHtmlThs(beanFieldNames)); + String text = getTemplete("htmlList.txt"); + text = text.replace("{beanParamName}", beanParamName); + text = text.replace("{beanName}", beanName); + List beanFieldNames = input.getBeanFieldName(); + text = text.replace("{columnsDatas}", getHtmlColumnsDatas(beanFieldNames)); + text = text.replace("{ths}", getHtmlThs(beanFieldNames)); - FileUtil.saveTextFile(text, path + File.separator + beanParamName + "List.html"); - log.debug("生成查询页面:{}模板", beanName); + FileUtil.saveTextFile(text, path + File.separator + beanParamName + "List.html"); + log.debug("生成查询页面:{}模板", beanName); - text = getTemplete("htmlAdd.txt"); - text = text.replace("{beanParamName}", beanParamName); - text = text.replace("{addDivs}", getAddDivs(beanFieldNames)); - FileUtil.saveTextFile(text, path + File.separator + "add" + beanName + ".html"); - log.debug("生成添加页面:{}模板", beanName); + text = getTemplete("htmlAdd.txt"); + text = text.replace("{beanParamName}", beanParamName); + text = text.replace("{addDivs}", getAddDivs(beanFieldNames)); + FileUtil.saveTextFile(text, path + File.separator + "add" + beanName + ".html"); + log.debug("生成添加页面:{}模板", beanName); - text = getTemplete("htmlUpdate.txt"); - text = text.replace("{beanParamName}", beanParamName); - text = text.replace("{addDivs}", getAddDivs(beanFieldNames)); - text = text.replace("{initData}", getInitData(beanFieldNames)); - FileUtil.saveTextFile(text, path + File.separator + "update" + beanName + ".html"); - log.debug("生成修改页面:{}模板", beanName); - } + text = getTemplete("htmlUpdate.txt"); + text = text.replace("{beanParamName}", beanParamName); + text = text.replace("{addDivs}", getAddDivs(beanFieldNames)); + text = text.replace("{initData}", getInitData(beanFieldNames)); + FileUtil.saveTextFile(text, path + File.separator + "update" + beanName + ".html"); + log.debug("生成修改页面:{}模板", beanName); + } - private static CharSequence getInitData(List beanFieldNames) { - StringBuilder builder = new StringBuilder(); - beanFieldNames.forEach(b -> { - builder.append("\t\t\t\t\t\t$('#" + b + "').val(data." + b + ");\n"); - }); + private static CharSequence getInitData(List beanFieldNames) { + StringBuilder builder = new StringBuilder(); + beanFieldNames.forEach(b -> { + builder.append("\t\t\t\t\t\t$('#" + b + "').val(data." + b + ");\n"); + }); - return builder.toString(); - } + return builder.toString(); + } - private static String getAddDivs(List beanFieldNames) { - StringBuilder builder = new StringBuilder(); - beanFieldNames.forEach(b -> { - if (!"id".equals(b) && !"createTime".equals(b) && !"updateTime".equals(b)) { - builder.append("\t\t\t
\n"); - builder.append("\t\t\t\t\n"); - builder.append("\t\t\t\t
\n"); - builder.append("\t\t\t\t\t\n"); - builder.append("\t\t\t\t
\n"); - builder.append("\t\t\t
\n"); - } - }); - return builder.toString(); - } + private static String getAddDivs(List beanFieldNames) { + StringBuilder builder = new StringBuilder(); + beanFieldNames.forEach(b -> { + if (!"id".equals(b) && !"createTime".equals(b) && !"updateTime".equals(b)) { + builder.append("\t\t\t
\n"); + builder.append("\t\t\t\t\n"); + builder.append("\t\t\t\t
\n"); + builder.append("\t\t\t\t\t\n"); + builder.append("\t\t\t\t
\n"); + builder.append("\t\t\t
\n"); + } + }); + return builder.toString(); + } - private static String getHtmlThs(List beanFieldNames) { - StringBuilder builder = new StringBuilder(); - beanFieldNames.forEach(b -> { - builder.append("\t\t\t\t\t\t\t\t\t{beanFieldName}\n".replace("{beanFieldName}", b)); - }); - return builder.toString(); - } + private static String getHtmlThs(List beanFieldNames) { + StringBuilder builder = new StringBuilder(); + beanFieldNames.forEach(b -> { + builder.append("\t\t\t\t\t\t\t\t\t{beanFieldName}\n".replace("{beanFieldName}", b)); + }); + return builder.toString(); + } - private static String getHtmlColumnsDatas(List beanFieldNames) { - StringBuilder builder = new StringBuilder(); - beanFieldNames.forEach(b -> { - builder.append("\t\t\t\t{\"data\" : \"{beanFieldName}\", \"defaultContent\" : \"\"},\n" - .replace("{beanFieldName}", b)); - }); + private static String getHtmlColumnsDatas(List beanFieldNames) { + StringBuilder builder = new StringBuilder(); + beanFieldNames.forEach(b -> { + builder.append("\t\t\t\t{\"data\" : \"{beanFieldName}\", \"defaultContent\" : \"\"},\n".replace("{beanFieldName}", b)); + }); - builder.append(""); - return builder.toString(); - } + builder.append(""); + return builder.toString(); + } + public static String saveStruct(GenerateInput input) { + String beanPackageName = input.getBeanPackageName(); + String beanName = input.getBeanName(); + List beanFieldName = input.getBeanFieldName(); + List beanFieldType = input.getBeanFieldType(); + List columnNames = input.getColumnNames(); + + String text = """ + package {beanPackageName}; + + + type {beanName} struct { + {filelds} + } + """; + text = text.replace("{beanPackageName}", beanPackageName).replace("{beanName}", beanName); + String filelds = getFields_go(beanFieldName, beanFieldType,columnNames); + text = text.replace("{filelds}", filelds); + log.debug("生成java model:{}模板", beanName); + return text; + } + + public static String upperFirstChar(String string) { + String name = TemplateUtil.str2hump(string); + String firstChar = name.substring(0, 1); + name = name.replaceFirst(firstChar, firstChar.toUpperCase()); + return name; + } } diff --git a/src/main/resources/fxml/home.fxml b/src/main/resources/fxml/home.fxml index bf7bd5e..0297878 100644 --- a/src/main/resources/fxml/home.fxml +++ b/src/main/resources/fxml/home.fxml @@ -101,6 +101,7 @@ + diff --git a/src/main/resources/fxml/mysql-to-struct.fxml b/src/main/resources/fxml/mysql-to-struct.fxml new file mode 100644 index 0000000..5280bd4 --- /dev/null +++ b/src/main/resources/fxml/mysql-to-struct.fxml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + +