feat(all):添加是否生成动态表名的功能,添加是否生成验证类功能,添加选择数据库功能

main
forget_the_bright 6 months ago
parent 432058ed12
commit 6cf5472a08

@ -46,6 +46,12 @@
this.label5 = new System.Windows.Forms.Label(); this.label5 = new System.Windows.Forms.Label();
this.isGenOperationColumn = new System.Windows.Forms.CheckBox(); this.isGenOperationColumn = new System.Windows.Forms.CheckBox();
this.label6 = new System.Windows.Forms.Label(); this.label6 = new System.Windows.Forms.Label();
this.txt_database = new System.Windows.Forms.ComboBox();
this.databaseLable = new System.Windows.Forms.Label();
this.label7 = new System.Windows.Forms.Label();
this.isGeneratorValidateClass = new System.Windows.Forms.CheckBox();
this.label8 = new System.Windows.Forms.Label();
this.isGeneratorDynamicTableName = new System.Windows.Forms.CheckBox();
this.SuspendLayout(); this.SuspendLayout();
// //
// modelGen // modelGen
@ -61,7 +67,7 @@
// label2 // label2
// //
this.label2.AutoSize = true; this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(357, 16); this.label2.Location = new System.Drawing.Point(530, 16);
this.label2.Name = "label2"; this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(41, 12); this.label2.Size = new System.Drawing.Size(41, 12);
this.label2.TabIndex = 4; this.label2.TabIndex = 4;
@ -106,11 +112,12 @@
// txt_tablename // txt_tablename
// //
this.txt_tablename.FormattingEnabled = true; this.txt_tablename.FormattingEnabled = true;
this.txt_tablename.Location = new System.Drawing.Point(404, 12); this.txt_tablename.Location = new System.Drawing.Point(577, 12);
this.txt_tablename.Name = "txt_tablename"; this.txt_tablename.Name = "txt_tablename";
this.txt_tablename.Size = new System.Drawing.Size(218, 20); this.txt_tablename.Size = new System.Drawing.Size(218, 20);
this.txt_tablename.TabIndex = 72; this.txt_tablename.TabIndex = 72;
this.txt_tablename.Text = "请选择"; this.txt_tablename.Text = "请选择";
this.txt_tablename.SelectionChangeCommitted += new System.EventHandler(this.txt_tablename_SelectionChangeCommitted);
// //
// textBox1 // textBox1
// //
@ -214,11 +221,72 @@
this.label6.TabIndex = 83; this.label6.TabIndex = 83;
this.label6.Text = "是否生成操作列(生成2和3)"; this.label6.Text = "是否生成操作列(生成2和3)";
// //
// txt_database
//
this.txt_database.FormattingEnabled = true;
this.txt_database.Location = new System.Drawing.Point(188, 13);
this.txt_database.Name = "txt_database";
this.txt_database.Size = new System.Drawing.Size(218, 20);
this.txt_database.TabIndex = 85;
this.txt_database.Text = "请选择";
this.txt_database.SelectionChangeCommitted += new System.EventHandler(this.txt_database_SelectionChangeCommitted);
//
// databaseLable
//
this.databaseLable.AutoSize = true;
this.databaseLable.Location = new System.Drawing.Point(141, 17);
this.databaseLable.Name = "databaseLable";
this.databaseLable.Size = new System.Drawing.Size(41, 12);
this.databaseLable.TabIndex = 84;
this.databaseLable.Text = "表名:";
//
// label7
//
this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(54, 134);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(101, 12);
this.label7.TabIndex = 87;
this.label7.Text = "是否生成验证类:";
//
// isGeneratorValidateClass
//
this.isGeneratorValidateClass.AutoSize = true;
this.isGeneratorValidateClass.Location = new System.Drawing.Point(161, 134);
this.isGeneratorValidateClass.Name = "isGeneratorValidateClass";
this.isGeneratorValidateClass.Size = new System.Drawing.Size(15, 14);
this.isGeneratorValidateClass.TabIndex = 86;
this.isGeneratorValidateClass.UseVisualStyleBackColor = true;
//
// label8
//
this.label8.AutoSize = true;
this.label8.Location = new System.Drawing.Point(54, 167);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(113, 12);
this.label8.TabIndex = 89;
this.label8.Text = "是否生成动态表名:";
//
// isGeneratorDynamicTableName
//
this.isGeneratorDynamicTableName.AutoSize = true;
this.isGeneratorDynamicTableName.Location = new System.Drawing.Point(173, 167);
this.isGeneratorDynamicTableName.Name = "isGeneratorDynamicTableName";
this.isGeneratorDynamicTableName.Size = new System.Drawing.Size(15, 14);
this.isGeneratorDynamicTableName.TabIndex = 88;
this.isGeneratorDynamicTableName.UseVisualStyleBackColor = true;
//
// Form1 // Form1
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1084, 778); this.ClientSize = new System.Drawing.Size(1065, 778);
this.Controls.Add(this.label8);
this.Controls.Add(this.isGeneratorDynamicTableName);
this.Controls.Add(this.label7);
this.Controls.Add(this.isGeneratorValidateClass);
this.Controls.Add(this.txt_database);
this.Controls.Add(this.databaseLable);
this.Controls.Add(this.label6); this.Controls.Add(this.label6);
this.Controls.Add(this.isGenOperationColumn); this.Controls.Add(this.isGenOperationColumn);
this.Controls.Add(this.label5); this.Controls.Add(this.label5);
@ -265,6 +333,12 @@
private System.Windows.Forms.Label label5; private System.Windows.Forms.Label label5;
private System.Windows.Forms.CheckBox isGenOperationColumn; private System.Windows.Forms.CheckBox isGenOperationColumn;
private System.Windows.Forms.Label label6; private System.Windows.Forms.Label label6;
private System.Windows.Forms.ComboBox txt_database;
private System.Windows.Forms.Label databaseLable;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.CheckBox isGeneratorValidateClass;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.CheckBox isGeneratorDynamicTableName;
} }
} }

@ -4,6 +4,7 @@ using System.IO;
using System.Windows.Forms; using System.Windows.Forms;
using GenerateClass.Util; using GenerateClass.Util;
using JinianNet.JNTemplate; using JinianNet.JNTemplate;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
namespace GenerateClass namespace GenerateClass
{ {
@ -14,9 +15,25 @@ namespace GenerateClass
InitializeComponent(); InitializeComponent();
} }
private void Form1_Load(object sender, EventArgs e) private void Form1_Load(object sender, EventArgs e)
{
loadControl();
}
private string tableName;
#region 加载控件
private void loadControl()
{
loadTableNameControl();
loadDataBaseNameControl();
}
/// <summary>
/// 加载表名控件
/// </summary>
private void loadTableNameControl()
{ {
this.txt_tablename.Items.AddRange(DbUtil.GetTableName().ToArray()); this.txt_tablename.Items.AddRange(DbUtil.GetTableName().ToArray());
this.txt_tablename.TextUpdate += (childSender, childE) => { this.txt_tablename.TextUpdate += (childSender, childE) =>
{
string str = this.txt_tablename.Text; //获取输入内容 string str = this.txt_tablename.Text; //获取输入内容
List<string> sList = DbUtil.GetTableName(str); //存放数据库查询结果 List<string> sList = DbUtil.GetTableName(str); //存放数据库查询结果
//提前下拉,以显示搜索结果(必须要在添加项之前下拉,否则会将第一项自动添加到编辑框内 覆盖掉输入的内容) //提前下拉,以显示搜索结果(必须要在添加项之前下拉,否则会将第一项自动添加到编辑框内 覆盖掉输入的内容)
@ -27,24 +44,76 @@ namespace GenerateClass
this.txt_tablename.Items.AddRange(sList.ToArray()); this.txt_tablename.Items.AddRange(sList.ToArray());
this.txt_tablename.Select(this.txt_tablename.Text.Length, 0); this.txt_tablename.Select(this.txt_tablename.Text.Length, 0);
}; };
} }
/// <summary>
/// 加载数据库名控件
/// </summary>
private void loadDataBaseNameControl()
{
this.txt_database.Items.AddRange(DbUtil.GetDataBaseName().ToArray());
this.txt_database.TextUpdate += (childSender, childE) =>
{
string str = this.txt_database.Text; //获取输入内容
List<string> sList = DbUtil.GetDataBaseName(str); //存放数据库查询结果
//提前下拉,以显示搜索结果(必须要在添加项之前下拉,否则会将第一项自动添加到编辑框内 覆盖掉输入的内容)
this.txt_database.DroppedDown = true; //显示下拉列表,但是显示后鼠标指针就不见了
Cursor.Current = Cursors.Default; //将指针显示出来
//在表中已录入名字中寻找包含输入内容的项 有则添加到comboBox项中
this.txt_database.Items.Clear();
this.txt_database.Items.AddRange(sList.ToArray());
this.txt_database.Select(this.txt_database.Text.Length, 0);
this.txt_tablename.Items.Clear();
};
this.txt_database.Text = DbHelperMySQL.DbName;
}
#endregion
private void modelGen_Click(object sender, EventArgs e) private void modelGen_Click(object sender, EventArgs e)
{ {
if (validateTableName())
{
return;
}
fillModelTemplate(); fillModelTemplate();
} }
private void dgvGen1_Click(object sender, EventArgs e) private void dgvGen1_Click(object sender, EventArgs e)
{ {
if (validateTableName())
{
return;
}
fillDgv1Template(); fillDgv1Template();
} }
private void dgvGen2_Click(object sender, EventArgs e) private void dgvGen2_Click(object sender, EventArgs e)
{ {
if (validateTableName())
{
return;
}
fillDgv2Template(); fillDgv2Template();
} }
private void dgvGen3_Click(object sender, EventArgs e) private void dgvGen3_Click(object sender, EventArgs e)
{ {
if (validateTableName())
{
return;
}
fillDgv3Template(); fillDgv3Template();
} }
private bool validateTableName()
{
string tbname = txt_tablename.Text.Trim();//要生成的表名
if (string.IsNullOrEmpty(tbname))
{
MessageBox.Show("请选择表");
return true;
}
if (tableName != tbname)
{
MessageBox.Show("请选择正确的表");
return true;
}
return false;
}
private void fillModelTemplate() private void fillModelTemplate()
{ {
string tbname = txt_tablename.Text.Trim();//要生成的表名 string tbname = txt_tablename.Text.Trim();//要生成的表名
@ -59,6 +128,9 @@ namespace GenerateClass
template.Set("sql_table_name", tbname); template.Set("sql_table_name", tbname);
template.Set("table_name", DbUtil.GenerateClassName(tbname)); template.Set("table_name", DbUtil.GenerateClassName(tbname));
template.Set("filedInfos", filedInfos); template.Set("filedInfos", filedInfos);
template.Set("dataBaseName", DbHelperMySQL.DbName);
template.Set("isGeneratorValidateClass", isGeneratorValidateClass.Checked);
template.Set("isGeneratorDynamicTableName", isGeneratorDynamicTableName.Checked);
template.SetStaticType("string", typeof(string)); template.SetStaticType("string", typeof(string));
var result = template.Render(); var result = template.Render();
this.txt_ret.Text = result; this.txt_ret.Text = result;
@ -82,6 +154,7 @@ namespace GenerateClass
template.Set("dgv_name", dgvName); template.Set("dgv_name", dgvName);
template.Set("filedInfos", filedInfos); template.Set("filedInfos", filedInfos);
template.Set("timeFiledStr", DbUtil.joinList(timeFileds)); template.Set("timeFiledStr", DbUtil.joinList(timeFileds));
template.Set("dataBaseName", DbHelperMySQL.DbName);
template.SetStaticType("string", typeof(string)); template.SetStaticType("string", typeof(string));
var result = template.Render(); var result = template.Render();
this.textBox1.Text = result; this.textBox1.Text = result;
@ -102,6 +175,7 @@ namespace GenerateClass
template.Set("dgv_name", dgvName); template.Set("dgv_name", dgvName);
template.Set("isGenOperationColumn", isGenOperationColumn.Checked); template.Set("isGenOperationColumn", isGenOperationColumn.Checked);
template.Set("timeFiledStr", DbUtil.joinList(timeFileds)); template.Set("timeFiledStr", DbUtil.joinList(timeFileds));
template.Set("dataBaseName", DbHelperMySQL.DbName);
template.SetStaticType("string", typeof(string)); template.SetStaticType("string", typeof(string));
var result = template.Render(); var result = template.Render();
this.textBox1.Text = result; this.textBox1.Text = result;
@ -124,10 +198,29 @@ namespace GenerateClass
template.Set("filedInfos", filedInfos); template.Set("filedInfos", filedInfos);
template.Set("isGenOperationColumn", isGenOperationColumn.Checked); template.Set("isGenOperationColumn", isGenOperationColumn.Checked);
template.Set("timeFiledStr", DbUtil.joinList(timeFileds)); template.Set("timeFiledStr", DbUtil.joinList(timeFileds));
template.Set("dataBaseName", DbHelperMySQL.DbName);
template.SetStaticType("string", typeof(string)); template.SetStaticType("string", typeof(string));
var result = template.Render(); var result = template.Render();
this.textBox1.Text = result; this.textBox1.Text = result;
} }
} }
private void txt_tablename_SelectionChangeCommitted(object sender, EventArgs e)
{
// 获取选中的值
string selectedValue = txt_tablename.SelectedItem.ToString();
tableName = selectedValue;
}
private void txt_database_SelectionChangeCommitted(object sender, EventArgs e)
{
this.txt_tablename.Items.Clear();
// 获取选中的值
string selectedValue = txt_database.SelectedItem.ToString();
DbHelperMySQL.DbName = selectedValue;
this.txt_tablename.SelectedIndex = -1;
this.txt_tablename.Text = "";
this.txt_tablename.Items.AddRange(DbUtil.GetTableName().ToArray());
}
} }
} }

@ -27,7 +27,16 @@ $end
public ${filedInfo["type_name"]} ${filedInfo["field_name"]} { get; set; } public ${filedInfo["type_name"]} ${filedInfo["field_name"]} { get; set; }
$end $end
$if(isGeneratorDynamicTableName)
static ${table_name}(){
${table_name}.DynamicTableName += () =>
{
return $"${dataBaseName}.{_tableName}";
};
}
$end
} }
$if(isGeneratorValidateClass)
/// <summary> /// <summary>
/// 验证类 采用FluentValidation /// 验证类 采用FluentValidation
/// 项目地址 https://github.com/FluentValidation/FluentValidation /// 项目地址 https://github.com/FluentValidation/FluentValidation
@ -44,4 +53,5 @@ $end
$end $end
} }
} }
$end
} }

@ -65,7 +65,8 @@ namespace GenerateClass.Util
public static List<string> getTimeFields(List<Dictionary<string, string>> filedInfos) public static List<string> getTimeFields(List<Dictionary<string, string>> filedInfos)
{ {
var list = new List<string>(); var list = new List<string>();
filedInfos.ForEach(info => { filedInfos.ForEach(info =>
{
if (info["type_name"] == "DateTime") list.Add(info["sql_field_name"]); if (info["type_name"] == "DateTime") list.Add(info["sql_field_name"]);
}); });
return list; return list;
@ -100,7 +101,14 @@ namespace GenerateClass.Util
var dt = DbHelperMySQL.Query(String.Format(sql, tabname, DbHelperMySQL.DbName)); var dt = DbHelperMySQL.Query(String.Format(sql, tabname, DbHelperMySQL.DbName));
return dt; return dt;
} }
public static string GetTableComment(string tableName)
{
string sql = $"SELECT TABLE_COMMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '{DbHelperMySQL.DbName}' AND TABLE_NAME ='{tableName}';";
var dt = DbHelperMySQL.Query(sql);
if (dt.Rows.Count < 1) return tableName;
return dt.Rows[0]["TABLE_COMMENT"].ToString();
}
public static List<string> GetTableName(string tableName) public static List<string> GetTableName(string tableName)
{ {
@ -115,14 +123,6 @@ namespace GenerateClass.Util
return sList; return sList;
//return dt; //return dt;
} }
public static string GetTableComment(string tableName)
{
string sql = $"SELECT TABLE_COMMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '{DbHelperMySQL.DbName}' AND TABLE_NAME ='{tableName}';";
var dt = DbHelperMySQL.Query(sql);
if (dt.Rows.Count < 1) return tableName;
return dt.Rows[0]["TABLE_COMMENT"].ToString();
}
public static List<string> GetTableName() public static List<string> GetTableName()
{ {
@ -136,6 +136,18 @@ namespace GenerateClass.Util
} }
return sList; return sList;
} }
public static List<string> GetDataBaseName(string dataBaseName = null)
{
string sql = $"SHOW DATABASES {(string.IsNullOrEmpty(dataBaseName) ? "" : $"LIKE '%{dataBaseName}%'")} ;";
var dt = DbHelperMySQL.Query(sql);
//查询数据库表中所有已录入人员
List<string> sList = new List<string>(); //存放数据库查询结果
for (int i = 0; i < dt.Rows.Count; i++)
{
sList.Add(dt.Rows[i][$"Database{(string.IsNullOrEmpty(dataBaseName) ? "" : $" (%{dataBaseName}%)")}"].ToString());
}
return sList;
}
public static Dictionary<string, Type> DbTypeDic { get; } = new Dictionary<string, Type>(StringComparer.OrdinalIgnoreCase) public static Dictionary<string, Type> DbTypeDic { get; } = new Dictionary<string, Type>(StringComparer.OrdinalIgnoreCase)
{ {

Loading…
Cancel
Save