//根据内容获取表名称及表的中文名称 private TableDescript getTableNameAndChinese(string content, bool?isPascal) { TableDescript tableDescript = new TableDescript(); //获取表名称相关 Match match = Regex.Match(content, @"CREATE TABLE `(\w+?)`", RegexOptions.ECMAScript); string tableName = match.Groups[1].Value; tableDescript.tableName = tableName; tableDescript.tableNameUpper = (bool)isPascal ? Utils.ToHump(tableName) : Utils.ToFirstUpper(tableName); Match match1 = Regex.Match(content, @"CHARSET=utf8 COMMENT='([^\x00-\xff]+?)';", RegexOptions.ECMAScript); tableDescript.tableNameChinese = match1.Groups[1].Value; //获取主键 Match matchPrimaryKey = Regex.Match(content, @"PRIMARY KEY \(`(\w+?)`\)", RegexOptions.ECMAScript); string tablePrimaryKey = matchPrimaryKey.Groups[1].Value; tableDescript.tablePrimaryKey = tablePrimaryKey; tableDescript.tablePrimaryKeyUpper = (bool)isPascal ? Utils.ToHump(tablePrimaryKey) : Utils.ToFirstUpper(tablePrimaryKey); return(tableDescript); }
/// <summary> /// 获取表的基本信息 /// </summary> /// <param name="content"></param> private TableDescript getTablesDescript(string content, bool?isPascal) { //获取表名称 TableDescript tableDescript = getTableNameAndChinese(content, isPascal); //获取表格字段名称 tableDescript = getTableField(tableDescript, content, (bool)isPascal); return(tableDescript); }
/// <summary> /// 获取表格字段信息 /// </summary> /// <param name="tableDescript"></param> /// <param name="content"></param> /// <returns></returns> private TableDescript getTableField(TableDescript tableDescript, string content, Boolean isPascal) { List <TableField> list = new List <TableField>(); MatchCollection matchesNull = Regex.Matches(content, @"`(\w+?)` (.+?) DEFAULT NULL COMMENT '(.+?)',", RegexOptions.ECMAScript); foreach (Match item in matchesNull) { TableField table = new TableField(isPascal); table.Name = item.Groups[1].Value; table.Type = item.Groups[2].Value; table.Descript = item.Groups[3].Value; list.Add(table); } tableDescript.tableFields = list; return(tableDescript); }
//CREATE TABLE `bank_info` ( // `bank_oid` varchar(42) NOT NULL COMMENT '附件id', // `owner_oid` varchar(42) DEFAULT NULL COMMENT '业主id', // `owner_name` varchar(200) DEFAULT NULL COMMENT '业主姓名', // `bank_user` varchar(200) DEFAULT NULL COMMENT '收款户名', // `bank_card` varchar(19) DEFAULT NULL COMMENT '银行卡号', // `bank_name` varchar(200) DEFAULT NULL COMMENT '所属银行名称', // `bank_pay_name` varchar(200) DEFAULT NULL COMMENT '收款银行名称', // `update_employee` varchar(42) DEFAULT NULL COMMENT '更新人id', // `update_time` datetime DEFAULT NULL COMMENT '更新时间', // `customer_code` varchar(200) DEFAULT NULL COMMENT '公共客商编号', // `is_delete` int (11) DEFAULT NULL COMMENT '是否停用', // PRIMARY KEY(`bank_oid`) //) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT = '银行信息表'; private void Button_Click(object sender, RoutedEventArgs e) { string folder = labelFolder.Content.ToString(); if (String.IsNullOrEmpty(folder)) { System.Windows.MessageBox.Show("请先选择路径"); return; } int index = comTemplate.SelectedIndex; bool? isPascal = checkPascal.IsChecked; string content = txtContent.Text; TableDescript tableDescript = getTablesDescript(content, isPascal); if (index < 0) { System.Windows.MessageBox.Show("请选择生成模版"); return; } if (index == 0) { generateCrud(folder, tableDescript.tableName, tableDescript.tableNameUpper, tableDescript.tableNameChinese, tableDescript.tableFields, tableDescript.tablePrimaryKey); } else if (index == 1) { generateEmpty(folder, tableDescript.tableName, tableDescript.tableNameUpper, tableDescript.tableNameChinese, tableDescript.tableFields, tableDescript.tablePrimaryKey); } else if (index == 2) { generateNoPascalCrudV2(folder, tableDescript.tableName, tableDescript.tableNameUpper, tableDescript.tableNameChinese, tableDescript.tableFields, tableDescript.tablePrimaryKey, "crudv2"); } else if (index == 3) { generateNoPascalCrudV2(folder, tableDescript.tableName, tableDescript.tableNameUpper, tableDescript.tableNameChinese, tableDescript.tableFields, tableDescript.tablePrimaryKey, "crudv2"); } else if (index == 4) { generateNoPascalCrudV2(folder, tableDescript.tableName, tableDescript.tableNameUpper, tableDescript.tableNameChinese, tableDescript.tableFields, tableDescript.tablePrimaryKey, "treecrud"); } System.Windows.MessageBox.Show("生成成功"); }