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 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));
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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 {
|
||||
|
||||
Json_Struct("json生成结构体", 0),
|
||||
Mysql_Struct("mysql生成结构体", 1),
|
||||
;
|
||||
|
||||
GoTools(String title, int index) {
|
||||
|
|
|
|||
|
|
@ -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<String> beanFieldName = input.getBeanFieldName();
|
||||
List<String> beanFieldType = input.getBeanFieldType();
|
||||
List<String> 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<String> beanFieldName = input.getBeanFieldName();
|
||||
List<String> beanFieldType = input.getBeanFieldType();
|
||||
List<String> 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<String> beanFieldName, List<String> beanFieldType,
|
||||
List<String> 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<String> beanFieldName, List<String> beanFieldType, List<String> 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<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;
|
||||
}
|
||||
private static String getFields_go(List<String> beanFieldName, List<String> beanFieldType,List<String> 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<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 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<String> columnNames, List<String> 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<String> 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<String> columnNames, List<String> 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<String> columnNames, List<String> 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<if test=\"" + beanFieldName.get(i) + " != null\">\n");
|
||||
buffer.append("\t\t\t\t" + column).append(" = ").append("#{").append(beanFieldName.get(i))
|
||||
.append("}, \n");
|
||||
buffer.append("\t\t\t</if>\n");
|
||||
}
|
||||
}
|
||||
private static String getInsertColumns(List<String> 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<String> columnNames, List<String> 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<if test=\"params." + beanFieldName.get(i) + " != null and params." + beanFieldName.get(i) + " != ''\">\n");
|
||||
buffer.append("\t\t\t\tand " + column).append(" = ").append("#{params.").append(beanFieldName.get(i))
|
||||
.append("} \n");
|
||||
buffer.append("\t\t\t</if>\n");
|
||||
}
|
||||
private static String getUpdateSets(List<String> columnNames, List<String> 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<if test=\"" + beanFieldName.get(i) + " != null\">\n");
|
||||
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();
|
||||
}
|
||||
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<String> columnNames, List<String> 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<if test=\"params." + beanFieldName.get(i) + " != null and params." + beanFieldName.get(i) + " != ''\">\n");
|
||||
buffer.append("\t\t\t\tand " + column).append(" = ").append("#{params.").append(beanFieldName.get(i)).append("} \n");
|
||||
buffer.append("\t\t\t</if>\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<String> 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<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) {
|
||||
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<String> 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<String> 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<String> 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<String> 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<String> beanFieldNames) {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
beanFieldNames.forEach(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\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\t<input class='form-control' placeholder='" + b + "' type='text' name='" + b
|
||||
+ "' 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</div>\n");
|
||||
}
|
||||
});
|
||||
return builder.toString();
|
||||
}
|
||||
private static String getAddDivs(List<String> beanFieldNames) {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
beanFieldNames.forEach(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\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\t<input class='form-control' placeholder='" + b + "' type='text' name='" + b + "' 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</div>\n");
|
||||
}
|
||||
});
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
private static String getHtmlThs(List<String> beanFieldNames) {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
beanFieldNames.forEach(b -> {
|
||||
builder.append("\t\t\t\t\t\t\t\t\t<th>{beanFieldName}</th>\n".replace("{beanFieldName}", b));
|
||||
});
|
||||
return builder.toString();
|
||||
}
|
||||
private static String getHtmlThs(List<String> beanFieldNames) {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
beanFieldNames.forEach(b -> {
|
||||
builder.append("\t\t\t\t\t\t\t\t\t<th>{beanFieldName}</th>\n".replace("{beanFieldName}", b));
|
||||
});
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
private static String getHtmlColumnsDatas(List<String> 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<String> 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<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语言工具">
|
||||
<items>
|
||||
<MenuItem mnemonicParsing="false" text="json生成结构体" onAction="#json_to_struct_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="mysql生成结构体" onAction="#mysql_to_struct_menu_item"/>
|
||||
</items>
|
||||
</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