2023年11月18日14:23:14
parent
2226b85e38
commit
333be28e0e
|
|
@ -40,6 +40,7 @@ public class GoToolsController implements Serializable {
|
||||||
private SimpleDoubleProperty height = new SimpleDoubleProperty(0.0);
|
private SimpleDoubleProperty height = new SimpleDoubleProperty(0.0);
|
||||||
private AnchorPane root;
|
private AnchorPane root;
|
||||||
private AnchorPane json_to_struct;
|
private AnchorPane json_to_struct;
|
||||||
|
private AnchorPane mysql_to_struct;
|
||||||
|
|
||||||
public static final String color_cell = "#f4f4f4";
|
public static final String color_cell = "#f4f4f4";
|
||||||
|
|
||||||
|
|
@ -254,10 +255,34 @@ public class GoToolsController implements Serializable {
|
||||||
}
|
}
|
||||||
json_to_struct(flag);
|
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){
|
private void json_to_struct(boolean flag){
|
||||||
//默认选择第一个
|
//默认选择第一个
|
||||||
listView.getSelectionModel().select(0);
|
listView.getSelectionModel().select(0);
|
||||||
|
|
@ -278,6 +303,7 @@ public class GoToolsController implements Serializable {
|
||||||
public static Image getImage(ResourcesUtils.GoTools player){
|
public static Image getImage(ResourcesUtils.GoTools player){
|
||||||
return switch (player){
|
return switch (player){
|
||||||
case Json_Struct -> new Image(ImagePath.path(ImagePath.ImagePathType.MD5));
|
case Json_Struct -> new Image(ImagePath.path(ImagePath.ImagePathType.MD5));
|
||||||
|
case Mysql_Struct -> new Image(ImagePath.path(ImagePath.ImagePathType.MD5));
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -685,4 +685,8 @@ public class HomeController implements Serializable {
|
||||||
public void excel_read_menu_item(ActionEvent actionEvent) {
|
public void excel_read_menu_item(ActionEvent actionEvent) {
|
||||||
load_small_tools(21);
|
load_small_tools(21);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void mysql_to_struct_menu_item(ActionEvent actionEvent) {
|
||||||
|
load_go_tools(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -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<String, String> 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<BeanField, String> column_name;
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private TableColumn<BeanField, String> column_type;
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private TableColumn<BeanField, String> bean_field_name;
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private TableColumn<BeanField, String> bean_field_type;
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private TableColumn<BeanField, String> bean_field_value;
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private TableView<BeanField> tableView;
|
||||||
|
|
||||||
|
public ObservableList<BeanField> 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<String> comboBox_table;
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private ComboBox<String> comboBox_data_base;
|
||||||
|
|
||||||
|
private SimpleObjectProperty<GenerateDetail> bean_info = new SimpleObjectProperty<>();
|
||||||
|
|
||||||
|
private ObservableList<String> table_list = FXCollections.observableArrayList();
|
||||||
|
private ObservableList<String> 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<Map<String, Object>> maps = this.jdbcTemplate.queryForList("show databases");
|
||||||
|
for (Map<String, Object> 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<BeanField> fields = generateDetail.getFields();
|
||||||
|
List<String> beanFieldName = new ArrayList<>();
|
||||||
|
List<String> beanFieldType = new ArrayList<>();
|
||||||
|
List<String> beanFieldValue = new ArrayList<>();
|
||||||
|
List<String> 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<Map<String, Object>> 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<String, Object> 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<BeanField> 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<BeanField> 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<BeanField> fields = listBeanField(tableName);
|
||||||
|
detail.setFields(fields);
|
||||||
|
detail.setTableName(tableName);
|
||||||
|
return detail;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<BeanField> listBeanField(String tableName) {
|
||||||
|
getJdbcTemplate();
|
||||||
|
List<BeanField> 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -333,6 +333,7 @@ public class ResourcesUtils {
|
||||||
public enum GoTools {
|
public enum GoTools {
|
||||||
|
|
||||||
Json_Struct("json生成结构体", 0),
|
Json_Struct("json生成结构体", 0),
|
||||||
|
Mysql_Struct("mysql生成结构体", 1),
|
||||||
;
|
;
|
||||||
|
|
||||||
GoTools(String title, int index) {
|
GoTools(String title, int index) {
|
||||||
|
|
|
||||||
|
|
@ -38,52 +38,55 @@ import java.util.List;
|
||||||
|
|
||||||
public class TemplateUtil {
|
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) {
|
public static String getTemplete(String fileName) {
|
||||||
return FileUtil.getText(TemplateUtil.class.getClassLoader().getResourceAsStream("generate/" + fileName));
|
return FileUtil.getText(TemplateUtil.class.getClassLoader().getResourceAsStream("generate/" + fileName));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void saveJava(GenerateInput input) {
|
public static String getTemplete(String fileName, String path) {
|
||||||
String path = input.getPath();
|
return FileUtil.getText(TemplateUtil.class.getClassLoader().getResourceAsStream(path + "/" + fileName));
|
||||||
String beanPackageName = input.getBeanPackageName();
|
}
|
||||||
String beanName = input.getBeanName();
|
|
||||||
List<String> beanFieldName = input.getBeanFieldName();
|
|
||||||
List<String> beanFieldType = input.getBeanFieldType();
|
|
||||||
List<String> beanFieldValue = input.getBeanFieldValue();
|
|
||||||
|
|
||||||
String text = getTemplete("java.txt");
|
public static void saveJava(GenerateInput input) {
|
||||||
text = text.replace("{beanPackageName}", beanPackageName).replace("{beanName}", beanName);
|
String path = input.getPath();
|
||||||
|
String beanPackageName = input.getBeanPackageName();
|
||||||
|
String beanName = input.getBeanName();
|
||||||
|
List<String> beanFieldName = input.getBeanFieldName();
|
||||||
|
List<String> beanFieldType = input.getBeanFieldType();
|
||||||
|
List<String> beanFieldValue = input.getBeanFieldValue();
|
||||||
|
|
||||||
String imports = "";
|
String text = getTemplete("java.txt");
|
||||||
if (beanFieldType.contains(BigDecimal.class.getSimpleName())) {
|
text = text.replace("{beanPackageName}", beanPackageName).replace("{beanName}", beanName);
|
||||||
imports += "import " + BigDecimal.class.getName() + ";\n";
|
|
||||||
}
|
|
||||||
if (beanFieldType.contains(Date.class.getSimpleName())) {
|
|
||||||
imports += "import " + Date.class.getName() + ";";
|
|
||||||
}
|
|
||||||
|
|
||||||
text = text.replace("{import}", imports);
|
String imports = "";
|
||||||
String filelds = getFields(beanFieldName, beanFieldType, beanFieldValue);
|
if (beanFieldType.contains(BigDecimal.class.getSimpleName())) {
|
||||||
text = text.replace("{filelds}", filelds);
|
imports += "import " + BigDecimal.class.getName() + ";\n";
|
||||||
text = text.replace("{getset}", getset(beanFieldName, beanFieldType));
|
}
|
||||||
|
if (beanFieldType.contains(Date.class.getSimpleName())) {
|
||||||
|
imports += "import " + Date.class.getName() + ";";
|
||||||
|
}
|
||||||
|
|
||||||
FileUtil.saveTextFile(text, path + File.separator + getPackagePath(beanPackageName) + beanName + ".java");
|
text = text.replace("{import}", imports);
|
||||||
log.debug("生成java model:{}模板", beanName);
|
String filelds = getFields(beanFieldName, beanFieldType, beanFieldValue);
|
||||||
}
|
text = text.replace("{filelds}", filelds);
|
||||||
|
text = text.replace("{getset}", getset(beanFieldName, beanFieldType));
|
||||||
|
|
||||||
private static String getFields(List<String> beanFieldName, List<String> beanFieldType,
|
FileUtil.saveTextFile(text, path + File.separator + getPackagePath(beanPackageName) + beanName + ".java");
|
||||||
List<String> beanFieldValue) {
|
log.debug("生成java model:{}模板", beanName);
|
||||||
StringBuffer buffer = new StringBuffer();
|
}
|
||||||
int size = beanFieldName.size();
|
|
||||||
for (int i = 0; i < size; i++) {
|
private static String getFields(List<String> beanFieldName, List<String> beanFieldType, List<String> beanFieldValue) {
|
||||||
String name = beanFieldName.get(i);
|
StringBuffer buffer = new StringBuffer();
|
||||||
if ("id".equals(name) || "createTime".equals(name) || "updateTime".equals(name)) {
|
int size = beanFieldName.size();
|
||||||
continue;
|
for (int i = 0; i < size; i++) {
|
||||||
}
|
String name = beanFieldName.get(i);
|
||||||
String type = beanFieldType.get(i);
|
if ("id".equals(name) || "createTime".equals(name) || "updateTime".equals(name)) {
|
||||||
buffer.append("\tprivate ").append(type).append(" ").append(name);
|
continue;
|
||||||
// 默认值
|
}
|
||||||
|
String type = beanFieldType.get(i);
|
||||||
|
buffer.append("\tprivate ").append(type).append(" ").append(name);
|
||||||
|
// 默认值
|
||||||
// String value = beanFieldValue.get(i);
|
// String value = beanFieldValue.get(i);
|
||||||
// if (!StringUtils.isEmpty(value)) {
|
// if (!StringUtils.isEmpty(value)) {
|
||||||
// buffer.append(" = ");
|
// buffer.append(" = ");
|
||||||
|
|
@ -99,287 +102,323 @@ public class TemplateUtil {
|
||||||
//
|
//
|
||||||
// buffer.append(value);
|
// buffer.append(value);
|
||||||
// }
|
// }
|
||||||
buffer.append(";\n");
|
buffer.append(";\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
return buffer.toString();
|
return buffer.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String getset(List<String> beanFieldName, List<String> beanFieldType) {
|
private static String getFields_go(List<String> beanFieldName, List<String> beanFieldType,List<String> columnNames) {
|
||||||
StringBuffer buffer = new StringBuffer();
|
StringBuffer buffer = new StringBuffer();
|
||||||
int size = beanFieldName.size();
|
int size = beanFieldName.size();
|
||||||
for (int i = 0; i < size; i++) {
|
for (int i = 0; i < size; i++) {
|
||||||
String name = beanFieldName.get(i);
|
String name = beanFieldName.get(i);
|
||||||
if ("id".equals(name) || "createTime".equals(name) || "updateTime".equals(name)) {
|
if ("createTime".equals(name) || "updateTime".equals(name)) {
|
||||||
continue;
|
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);
|
return buffer.toString();
|
||||||
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();
|
private static String getset(List<String> beanFieldName, List<String> 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 type = beanFieldType.get(i);
|
||||||
String path = input.getPath();
|
buffer.append("\tpublic ").append(type).append(" get").append(StringUtils.substring(name, 0, 1).toUpperCase() + name.substring(1, name.length())).append("() {\n");
|
||||||
String tableName = input.getTableName();
|
buffer.append("\t\treturn ").append(name).append(";\n");
|
||||||
String beanPackageName = input.getBeanPackageName();
|
buffer.append("\t}\n");
|
||||||
String beanName = input.getBeanName();
|
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");
|
||||||
String daoPackageName = input.getDaoPackageName();
|
buffer.append("\t\tthis.").append(name).append(" = ").append(name).append(";\n");
|
||||||
String daoName = input.getDaoName();
|
buffer.append("\t}\n");
|
||||||
|
}
|
||||||
|
|
||||||
String text = getTemplete("dao.txt");
|
return buffer.toString();
|
||||||
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));
|
|
||||||
|
|
||||||
String insertColumns = getInsertColumns(input.getColumnNames());
|
public static void saveJavaDao(GenerateInput input) {
|
||||||
text = text.replace("{insert_columns}", insertColumns);
|
String path = input.getPath();
|
||||||
String insertValues = getInsertValues(input.getColumnNames(), input.getBeanFieldName());
|
String tableName = input.getTableName();
|
||||||
text = text.replace("{insert_values}", insertValues);
|
String beanPackageName = input.getBeanPackageName();
|
||||||
FileUtil.saveTextFile(text, path + File.separator + getPackagePath(daoPackageName) + daoName + ".java");
|
String beanName = input.getBeanName();
|
||||||
log.debug("生成java dao:{}模板", beanName);
|
String daoPackageName = input.getDaoPackageName();
|
||||||
|
String daoName = input.getDaoName();
|
||||||
|
|
||||||
text = getTemplete("mapper.xml");
|
String text = getTemplete("dao.txt");
|
||||||
text = text.replace("{daoPackageName}", daoPackageName);
|
text = text.replace("{daoPackageName}", daoPackageName);
|
||||||
text = text.replace("{daoName}", daoName);
|
text = text.replace("{beanPackageName}", beanPackageName);
|
||||||
text = text.replace("{table_name}", tableName);
|
text = text.replace("{daoName}", daoName);
|
||||||
text = text.replace("{beanName}", beanName);
|
text = text.replace("{table_name}", tableName);
|
||||||
String sets = getUpdateSets(input.getColumnNames(), input.getBeanFieldName());
|
text = text.replace("{beanName}", beanName);
|
||||||
text = text.replace("{update_sets}", sets);
|
text = text.replace("{beanParamName}", lowerFirstChar(beanName));
|
||||||
String where = getWhere(input.getColumnNames(), input.getBeanFieldName());
|
|
||||||
text = text.replace("{where}", where);
|
|
||||||
FileUtil.saveTextFile(text, path + File.separator + beanName + "Mapper.xml");
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String getInsertValues(List<String> columnNames, List<String> beanFieldName) {
|
String insertColumns = getInsertColumns(input.getColumnNames());
|
||||||
StringBuffer buffer = new StringBuffer();
|
text = text.replace("{insert_columns}", insertColumns);
|
||||||
int size = columnNames.size();
|
String insertValues = getInsertValues(input.getColumnNames(), input.getBeanFieldName());
|
||||||
for (int i = 0; i < size; i++) {
|
text = text.replace("{insert_values}", insertValues);
|
||||||
String column = columnNames.get(i);
|
FileUtil.saveTextFile(text, path + File.separator + getPackagePath(daoPackageName) + daoName + ".java");
|
||||||
if (!"id".equals(column)) {
|
log.debug("生成java dao:{}模板", beanName);
|
||||||
buffer.append("#{").append(beanFieldName.get(i)).append("}, ");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
String sets = StringUtils.substringBeforeLast(buffer.toString(), ",");
|
text = getTemplete("mapper.xml");
|
||||||
return sets;
|
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<String> columnNames) {
|
private static String getInsertValues(List<String> columnNames, List<String> beanFieldName) {
|
||||||
StringBuffer buffer = new StringBuffer();
|
StringBuffer buffer = new StringBuffer();
|
||||||
int size = columnNames.size();
|
int size = columnNames.size();
|
||||||
for (int i = 0; i < size; i++) {
|
for (int i = 0; i < size; i++) {
|
||||||
String column = columnNames.get(i);
|
String column = columnNames.get(i);
|
||||||
if (!"id".equals(column)) {
|
if (!"id".equals(column)) {
|
||||||
buffer.append(column).append(", ");
|
buffer.append("#{").append(beanFieldName.get(i)).append("}, ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String insertColumns = StringUtils.substringBeforeLast(buffer.toString(), ",");
|
String sets = StringUtils.substringBeforeLast(buffer.toString(), ",");
|
||||||
return insertColumns;
|
return sets;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String getUpdateSets(List<String> columnNames, List<String> beanFieldName) {
|
private static String getInsertColumns(List<String> columnNames) {
|
||||||
StringBuffer buffer = new StringBuffer();
|
StringBuffer buffer = new StringBuffer();
|
||||||
int size = columnNames.size();
|
int size = columnNames.size();
|
||||||
for (int i = 0; i < size; i++) {
|
for (int i = 0; i < size; i++) {
|
||||||
String column = columnNames.get(i);
|
String column = columnNames.get(i);
|
||||||
if (!"id".equals(column)) {
|
if (!"id".equals(column)) {
|
||||||
buffer.append("\t\t\t<if test=\"" + beanFieldName.get(i) + " != null\">\n");
|
buffer.append(column).append(", ");
|
||||||
buffer.append("\t\t\t\t" + column).append(" = ").append("#{").append(beanFieldName.get(i))
|
}
|
||||||
.append("}, \n");
|
}
|
||||||
buffer.append("\t\t\t</if>\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return buffer.toString();
|
String insertColumns = StringUtils.substringBeforeLast(buffer.toString(), ",");
|
||||||
}
|
return insertColumns;
|
||||||
|
}
|
||||||
|
|
||||||
private static String getWhere(List<String> columnNames, List<String> beanFieldName) {
|
private static String getUpdateSets(List<String> columnNames, List<String> beanFieldName) {
|
||||||
StringBuffer buffer = new StringBuffer();
|
StringBuffer buffer = new StringBuffer();
|
||||||
int size = columnNames.size();
|
int size = columnNames.size();
|
||||||
for (int i = 0; i < size; i++) {
|
for (int i = 0; i < size; i++) {
|
||||||
String column = columnNames.get(i);
|
String column = columnNames.get(i);
|
||||||
buffer.append("\t\t\t<if test=\"params." + beanFieldName.get(i) + " != null and params." + beanFieldName.get(i) + " != ''\">\n");
|
if (!"id".equals(column)) {
|
||||||
buffer.append("\t\t\t\tand " + column).append(" = ").append("#{params.").append(beanFieldName.get(i))
|
buffer.append("\t\t\t<if test=\"" + beanFieldName.get(i) + " != null\">\n");
|
||||||
.append("} \n");
|
buffer.append("\t\t\t\t" + column).append(" = ").append("#{").append(beanFieldName.get(i)).append("}, \n");
|
||||||
buffer.append("\t\t\t</if>\n");
|
buffer.append("\t\t\t</if>\n");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return buffer.toString();
|
return buffer.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
private static String getWhere(List<String> columnNames, List<String> beanFieldName) {
|
||||||
* 变量名
|
StringBuffer buffer = new StringBuffer();
|
||||||
*
|
int size = columnNames.size();
|
||||||
* @param beanName
|
for (int i = 0; i < size; i++) {
|
||||||
* @return
|
String column = columnNames.get(i);
|
||||||
*/
|
buffer.append("\t\t\t<if test=\"params." + beanFieldName.get(i) + " != null and params." + beanFieldName.get(i) + " != ''\">\n");
|
||||||
public static String lowerFirstChar(String beanName) {
|
buffer.append("\t\t\t\tand " + column).append(" = ").append("#{params.").append(beanFieldName.get(i)).append("} \n");
|
||||||
String name = str2hump(beanName);
|
buffer.append("\t\t\t</if>\n");
|
||||||
String firstChar = name.substring(0, 1);
|
}
|
||||||
name = name.replaceFirst(firstChar, firstChar.toLowerCase());
|
|
||||||
|
|
||||||
return name;
|
return buffer.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 字符串转为驼峰
|
* 变量名
|
||||||
*
|
*
|
||||||
* @param str
|
* @param beanName
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static String str2hump(String str) {
|
public static String lowerFirstChar(String beanName) {
|
||||||
StringBuffer buffer = new StringBuffer();
|
String name = str2hump(beanName);
|
||||||
if (str != null && str.length() > 0) {
|
String firstChar = name.substring(0, 1);
|
||||||
if (str.contains("_")) {
|
name = name.replaceFirst(firstChar, firstChar.toLowerCase());
|
||||||
String[] chars = str.split("_");
|
|
||||||
int size = chars.length;
|
|
||||||
if (size > 0) {
|
|
||||||
List<String> list = new ArrayList<>();
|
|
||||||
for (String s : chars) {
|
|
||||||
if (s != null && s.trim().length() > 0) {
|
|
||||||
list.add(s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
size = list.size();
|
return name;
|
||||||
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();
|
/**
|
||||||
}
|
* 字符串转为驼峰
|
||||||
|
*
|
||||||
|
* @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<String> 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) {
|
private static String getPackagePath(String packageName) {
|
||||||
String packagePath = packageName.replace(".", "/");
|
String packagePath = packageName.replace(".", "/");
|
||||||
if (!packagePath.endsWith("/")) {
|
if (!packagePath.endsWith("/")) {
|
||||||
packagePath = packagePath + "/";
|
packagePath = packagePath + "/";
|
||||||
}
|
}
|
||||||
|
|
||||||
return packagePath;
|
return packagePath;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void saveController(GenerateInput input) {
|
public static void saveController(GenerateInput input) {
|
||||||
String path = input.getPath();
|
String path = input.getPath();
|
||||||
String beanPackageName = input.getBeanPackageName();
|
String beanPackageName = input.getBeanPackageName();
|
||||||
String beanName = input.getBeanName();
|
String beanName = input.getBeanName();
|
||||||
String daoPackageName = input.getDaoPackageName();
|
String daoPackageName = input.getDaoPackageName();
|
||||||
String daoName = input.getDaoName();
|
String daoName = input.getDaoName();
|
||||||
|
|
||||||
String text = getTemplete("controller.txt");
|
String text = getTemplete("controller.txt");
|
||||||
text = text.replace("{daoPackageName}", daoPackageName);
|
text = text.replace("{daoPackageName}", daoPackageName);
|
||||||
text = text.replace("{beanPackageName}", beanPackageName);
|
text = text.replace("{beanPackageName}", beanPackageName);
|
||||||
text = text.replace("{daoName}", daoName);
|
text = text.replace("{daoName}", daoName);
|
||||||
text = text.replace("{daoParamName}", lowerFirstChar(daoName));
|
text = text.replace("{daoParamName}", lowerFirstChar(daoName));
|
||||||
text = text.replace("{beanName}", beanName);
|
text = text.replace("{beanName}", beanName);
|
||||||
text = text.replace("{beanParamName}", lowerFirstChar(beanName));
|
text = text.replace("{beanParamName}", lowerFirstChar(beanName));
|
||||||
text = text.replace("{controllerPkgName}", input.getControllerPkgName());
|
text = text.replace("{controllerPkgName}", input.getControllerPkgName());
|
||||||
text = text.replace("{controllerName}", input.getControllerName());
|
text = text.replace("{controllerName}", input.getControllerName());
|
||||||
|
|
||||||
FileUtil.saveTextFile(text, path + File.separator + getPackagePath(input.getControllerPkgName())
|
FileUtil.saveTextFile(text, path + File.separator + getPackagePath(input.getControllerPkgName()) + input.getControllerName() + ".java");
|
||||||
+ input.getControllerName() + ".java");
|
log.debug("生成controller:{}模板", beanName);
|
||||||
log.debug("生成controller:{}模板", beanName);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static void saveHtmlList(GenerateInput input) {
|
public static void saveHtmlList(GenerateInput input) {
|
||||||
String path = input.getPath();
|
String path = input.getPath();
|
||||||
String beanName = input.getBeanName();
|
String beanName = input.getBeanName();
|
||||||
String beanParamName = lowerFirstChar(beanName);
|
String beanParamName = lowerFirstChar(beanName);
|
||||||
|
|
||||||
String text = getTemplete("htmlList.txt");
|
String text = getTemplete("htmlList.txt");
|
||||||
text = text.replace("{beanParamName}", beanParamName);
|
text = text.replace("{beanParamName}", beanParamName);
|
||||||
text = text.replace("{beanName}", beanName);
|
text = text.replace("{beanName}", beanName);
|
||||||
List<String> beanFieldNames = input.getBeanFieldName();
|
List<String> beanFieldNames = input.getBeanFieldName();
|
||||||
text = text.replace("{columnsDatas}", getHtmlColumnsDatas(beanFieldNames));
|
text = text.replace("{columnsDatas}", getHtmlColumnsDatas(beanFieldNames));
|
||||||
text = text.replace("{ths}", getHtmlThs(beanFieldNames));
|
text = text.replace("{ths}", getHtmlThs(beanFieldNames));
|
||||||
|
|
||||||
FileUtil.saveTextFile(text, path + File.separator + beanParamName + "List.html");
|
FileUtil.saveTextFile(text, path + File.separator + beanParamName + "List.html");
|
||||||
log.debug("生成查询页面:{}模板", beanName);
|
log.debug("生成查询页面:{}模板", beanName);
|
||||||
|
|
||||||
text = getTemplete("htmlAdd.txt");
|
text = getTemplete("htmlAdd.txt");
|
||||||
text = text.replace("{beanParamName}", beanParamName);
|
text = text.replace("{beanParamName}", beanParamName);
|
||||||
text = text.replace("{addDivs}", getAddDivs(beanFieldNames));
|
text = text.replace("{addDivs}", getAddDivs(beanFieldNames));
|
||||||
FileUtil.saveTextFile(text, path + File.separator + "add" + beanName + ".html");
|
FileUtil.saveTextFile(text, path + File.separator + "add" + beanName + ".html");
|
||||||
log.debug("生成添加页面:{}模板", beanName);
|
log.debug("生成添加页面:{}模板", beanName);
|
||||||
|
|
||||||
text = getTemplete("htmlUpdate.txt");
|
text = getTemplete("htmlUpdate.txt");
|
||||||
text = text.replace("{beanParamName}", beanParamName);
|
text = text.replace("{beanParamName}", beanParamName);
|
||||||
text = text.replace("{addDivs}", getAddDivs(beanFieldNames));
|
text = text.replace("{addDivs}", getAddDivs(beanFieldNames));
|
||||||
text = text.replace("{initData}", getInitData(beanFieldNames));
|
text = text.replace("{initData}", getInitData(beanFieldNames));
|
||||||
FileUtil.saveTextFile(text, path + File.separator + "update" + beanName + ".html");
|
FileUtil.saveTextFile(text, path + File.separator + "update" + beanName + ".html");
|
||||||
log.debug("生成修改页面:{}模板", beanName);
|
log.debug("生成修改页面:{}模板", beanName);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static CharSequence getInitData(List<String> beanFieldNames) {
|
private static CharSequence getInitData(List<String> beanFieldNames) {
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
beanFieldNames.forEach(b -> {
|
beanFieldNames.forEach(b -> {
|
||||||
builder.append("\t\t\t\t\t\t$('#" + b + "').val(data." + b + ");\n");
|
builder.append("\t\t\t\t\t\t$('#" + b + "').val(data." + b + ");\n");
|
||||||
});
|
});
|
||||||
|
|
||||||
return builder.toString();
|
return builder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String getAddDivs(List<String> beanFieldNames) {
|
private static String getAddDivs(List<String> beanFieldNames) {
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
beanFieldNames.forEach(b -> {
|
beanFieldNames.forEach(b -> {
|
||||||
if (!"id".equals(b) && !"createTime".equals(b) && !"updateTime".equals(b)) {
|
if (!"id".equals(b) && !"createTime".equals(b) && !"updateTime".equals(b)) {
|
||||||
builder.append("\t\t\t<div class='form-group'>\n");
|
builder.append("\t\t\t<div class='form-group'>\n");
|
||||||
builder.append("\t\t\t\t<label class='col-md-2 control-label'>" + b + "</label>\n");
|
builder.append("\t\t\t\t<label class='col-md-2 control-label'>" + b + "</label>\n");
|
||||||
builder.append("\t\t\t\t<div class='col-md-10'>\n");
|
builder.append("\t\t\t\t<div class='col-md-10'>\n");
|
||||||
builder.append("\t\t\t\t\t<input class='form-control' placeholder='" + b + "' type='text' name='" + b
|
builder.append("\t\t\t\t\t<input class='form-control' placeholder='" + b + "' type='text' name='" + b + "' id='" + b + "' data-bv-notempty='true' data-bv-notempty-message='" + b + " 不能为空'>\n");
|
||||||
+ "' id='" + b + "' data-bv-notempty='true' data-bv-notempty-message='" + b + " 不能为空'>\n");
|
builder.append("\t\t\t\t</div>\n");
|
||||||
builder.append("\t\t\t\t</div>\n");
|
builder.append("\t\t\t</div>\n");
|
||||||
builder.append("\t\t\t</div>\n");
|
}
|
||||||
}
|
});
|
||||||
});
|
return builder.toString();
|
||||||
return builder.toString();
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private static String getHtmlThs(List<String> beanFieldNames) {
|
private static String getHtmlThs(List<String> beanFieldNames) {
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
beanFieldNames.forEach(b -> {
|
beanFieldNames.forEach(b -> {
|
||||||
builder.append("\t\t\t\t\t\t\t\t\t<th>{beanFieldName}</th>\n".replace("{beanFieldName}", b));
|
builder.append("\t\t\t\t\t\t\t\t\t<th>{beanFieldName}</th>\n".replace("{beanFieldName}", b));
|
||||||
});
|
});
|
||||||
return builder.toString();
|
return builder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String getHtmlColumnsDatas(List<String> beanFieldNames) {
|
private static String getHtmlColumnsDatas(List<String> beanFieldNames) {
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
beanFieldNames.forEach(b -> {
|
beanFieldNames.forEach(b -> {
|
||||||
builder.append("\t\t\t\t{\"data\" : \"{beanFieldName}\", \"defaultContent\" : \"\"},\n"
|
builder.append("\t\t\t\t{\"data\" : \"{beanFieldName}\", \"defaultContent\" : \"\"},\n".replace("{beanFieldName}", b));
|
||||||
.replace("{beanFieldName}", b));
|
});
|
||||||
});
|
|
||||||
|
|
||||||
builder.append("");
|
builder.append("");
|
||||||
return builder.toString();
|
return builder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String saveStruct(GenerateInput input) {
|
||||||
|
String beanPackageName = input.getBeanPackageName();
|
||||||
|
String beanName = input.getBeanName();
|
||||||
|
List<String> beanFieldName = input.getBeanFieldName();
|
||||||
|
List<String> beanFieldType = input.getBeanFieldType();
|
||||||
|
List<String> 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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -101,6 +101,7 @@
|
||||||
<Menu mnemonicParsing="false" text="go语言工具">
|
<Menu mnemonicParsing="false" text="go语言工具">
|
||||||
<items>
|
<items>
|
||||||
<MenuItem mnemonicParsing="false" text="json生成结构体" onAction="#json_to_struct_menu_item"/>
|
<MenuItem mnemonicParsing="false" text="json生成结构体" onAction="#json_to_struct_menu_item"/>
|
||||||
|
<MenuItem mnemonicParsing="false" text="mysql生成结构体" onAction="#mysql_to_struct_menu_item"/>
|
||||||
</items>
|
</items>
|
||||||
</Menu>
|
</Menu>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,49 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<?import javafx.scene.control.Button?>
|
||||||
|
<?import javafx.scene.control.ComboBox?>
|
||||||
|
<?import javafx.scene.control.Label?>
|
||||||
|
<?import javafx.scene.control.TableColumn?>
|
||||||
|
<?import javafx.scene.control.TableView?>
|
||||||
|
<?import javafx.scene.control.TextArea?>
|
||||||
|
<?import javafx.scene.control.TextField?>
|
||||||
|
<?import javafx.scene.layout.AnchorPane?>
|
||||||
|
|
||||||
|
<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.MySQLToStructController">
|
||||||
|
<children>
|
||||||
|
<TableView fx:id="tableView" layoutY="461.0" prefHeight="187.0" prefWidth="1200.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="461.0">
|
||||||
|
<columns>
|
||||||
|
<TableColumn fx:id="column_name" prefWidth="200.0" text="表字段名" />
|
||||||
|
<TableColumn fx:id="column_type" prefWidth="200.0" text="表类型" />
|
||||||
|
<TableColumn prefWidth="202.0" text="字段描述" />
|
||||||
|
<TableColumn fx:id="bean_field_name" prefWidth="198.0" text="java字段名" />
|
||||||
|
<TableColumn fx:id="bean_field_type" prefWidth="200.0" text="java字段类型" />
|
||||||
|
<TableColumn fx:id="bean_field_value" prefWidth="200.0" text="默认值" />
|
||||||
|
</columns>
|
||||||
|
</TableView>
|
||||||
|
<Label layoutX="4.0" layoutY="433.0" text="字段详情" AnchorPane.leftAnchor="4.0" />
|
||||||
|
<Label layoutX="10.0" layoutY="217.0" text="结构体" AnchorPane.leftAnchor="10.0" />
|
||||||
|
<Label layoutX="438.0" layoutY="174.0" text="表名" />
|
||||||
|
<TextField fx:id="table_name" layoutX="491.0" layoutY="170.0" />
|
||||||
|
<Button layoutX="670.0" layoutY="170.0" mnemonicParsing="false" onAction="#preview_code" text="预览代码" />
|
||||||
|
<Button layoutX="754.0" layoutY="170.0" mnemonicParsing="false" onAction="#save_code" text="保存代码" />
|
||||||
|
<Label layoutX="10.0" layoutY="48.0" text="数据源配置" />
|
||||||
|
<TextField fx:id="username" layoutX="164.0" layoutY="85.0" />
|
||||||
|
<Label layoutX="93.0" layoutY="89.0" text="用户名" />
|
||||||
|
<Label layoutX="370.0" layoutY="89.0" text="密码" />
|
||||||
|
<TextField fx:id="password" layoutX="416.0" layoutY="85.0" />
|
||||||
|
<Label layoutX="866.0" layoutY="89.0" text="数据名" />
|
||||||
|
<TextField fx:id="ip_address" layoutX="164.0" layoutY="119.0" />
|
||||||
|
<TextField fx:id="data_base" layoutX="921.0" layoutY="85.0" />
|
||||||
|
<Label layoutX="94.0" layoutY="123.0" text="IP地址" />
|
||||||
|
<Label layoutX="370.0" layoutY="123.0" text="端口" />
|
||||||
|
<TextField fx:id="port" layoutX="416.0" layoutY="119.0" />
|
||||||
|
<ComboBox fx:id="comboBox_table" layoutX="921.0" layoutY="119.0" prefHeight="25.0" prefWidth="161.0" />
|
||||||
|
<Label layoutX="866.0" layoutY="123.0" text="列表" />
|
||||||
|
<Button layoutX="1100.0" layoutY="119.0" mnemonicParsing="false" onAction="#fetch_table" text="获取" />
|
||||||
|
<Label layoutX="603.0" layoutY="89.0" text="数据库列表" />
|
||||||
|
<ComboBox fx:id="comboBox_data_base" layoutX="679.0" layoutY="85.0" prefWidth="150.0" />
|
||||||
|
<Button layoutX="652.0" layoutY="119.0" mnemonicParsing="false" onAction="#get_all_data_base" text="获取数据库列表" />
|
||||||
|
<TextArea fx:id="struct_view" layoutX="82.0" layoutY="213.0" prefHeight="218.0" prefWidth="1114.0" AnchorPane.leftAnchor="86.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="213.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
package {beanPackageName};
|
||||||
|
|
||||||
|
type {beanName} struct {
|
||||||
|
|
||||||
|
{filelds}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue