JavaCode/BsTemplate/Entity.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
JavaCode/BsTemplate/Mapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
JavaCode/FrmMyBatisPlus.Designer.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
JavaCode/FrmMyBatisPlus.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
JavaCode/JavaCode.csproj | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
JavaCode/BsTemplate/Entity.java
@@ -15,7 +15,6 @@ */ @Data @AllArgsConstructor @NoArgsConstructor @TableName("{tabName}") public class {entityName} implements Serializable { private static final long serialVersionUID = {uid}L; JavaCode/BsTemplate/Mapper.java
@@ -14,12 +14,5 @@ @Mapper @Repository public interface {mapperName} extends BaseMapper<{entityName}> { /** * 查询一条 * * @param {id} * @return */ @Select("{selectSql}") {entityName} selectOne(@Param("{id}") Integer {id}); {wkt} } JavaCode/FrmMyBatisPlus.Designer.cs
@@ -37,10 +37,14 @@ this.label3 = new System.Windows.Forms.Label(); this.txtMapperNS = new System.Windows.Forms.TextBox(); this.label2 = new System.Windows.Forms.Label(); this.btnGenerate = new System.Windows.Forms.Button(); this.btnGeneAll = new System.Windows.Forms.Button(); this.btnAll = new System.Windows.Forms.Button(); this.btnAnti = new System.Windows.Forms.Button(); this.btnNone = new System.Windows.Forms.Button(); this.btnGeneEntity = new System.Windows.Forms.Button(); this.btnGeneMapper = new System.Windows.Forms.Button(); this.txtTabNS = new System.Windows.Forms.TextBox(); this.label1 = new System.Windows.Forms.Label(); ((System.ComponentModel.ISupportInitialize)(this.dgvTab)).BeginInit(); this.SuspendLayout(); // @@ -105,17 +109,17 @@ // txtEntityNS // this.txtEntityNS.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.txtEntityNS.Location = new System.Drawing.Point(525, 61); this.txtEntityNS.Location = new System.Drawing.Point(525, 89); this.txtEntityNS.Name = "txtEntityNS"; this.txtEntityNS.Size = new System.Drawing.Size(312, 26); this.txtEntityNS.TabIndex = 30; this.txtEntityNS.Text = "com.lf.server.entity.db"; this.txtEntityNS.Text = "com.lf.server.entity.bd"; // // label3 // this.label3.AutoSize = true; this.label3.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.label3.Location = new System.Drawing.Point(385, 66); this.label3.Location = new System.Drawing.Point(385, 94); this.label3.Name = "label3"; this.label3.Size = new System.Drawing.Size(136, 16); this.label3.TabIndex = 29; @@ -124,32 +128,32 @@ // txtMapperNS // this.txtMapperNS.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.txtMapperNS.Location = new System.Drawing.Point(525, 15); this.txtMapperNS.Location = new System.Drawing.Point(525, 53); this.txtMapperNS.Name = "txtMapperNS"; this.txtMapperNS.Size = new System.Drawing.Size(312, 26); this.txtMapperNS.TabIndex = 32; this.txtMapperNS.Text = "com.lf.server.mapper.db"; this.txtMapperNS.Text = "com.lf.server.mapper.bd"; // // label2 // this.label2.AutoSize = true; this.label2.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.label2.Location = new System.Drawing.Point(385, 20); this.label2.Location = new System.Drawing.Point(385, 58); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(136, 16); this.label2.TabIndex = 31; this.label2.Text = "Mapper名称空间:"; // // btnGenerate // btnGeneAll // this.btnGenerate.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.btnGenerate.Location = new System.Drawing.Point(525, 115); this.btnGenerate.Name = "btnGenerate"; this.btnGenerate.Size = new System.Drawing.Size(312, 25); this.btnGenerate.TabIndex = 33; this.btnGenerate.Text = "生 成 文 件"; this.btnGenerate.UseVisualStyleBackColor = true; this.btnGenerate.Click += new System.EventHandler(this.btnGenerate_Click); this.btnGeneAll.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.btnGeneAll.Location = new System.Drawing.Point(525, 208); this.btnGeneAll.Name = "btnGeneAll"; this.btnGeneAll.Size = new System.Drawing.Size(312, 25); this.btnGeneAll.TabIndex = 33; this.btnGeneAll.Text = "生 成 所 有 文 件"; this.btnGeneAll.UseVisualStyleBackColor = true; this.btnGeneAll.Click += new System.EventHandler(this.btnGeneAll_Click); // // btnAll // @@ -184,15 +188,60 @@ this.btnNone.UseVisualStyleBackColor = true; this.btnNone.Click += new System.EventHandler(this.btnNone_Click); // // btnGeneEntity // this.btnGeneEntity.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.btnGeneEntity.Location = new System.Drawing.Point(525, 169); this.btnGeneEntity.Name = "btnGeneEntity"; this.btnGeneEntity.Size = new System.Drawing.Size(312, 25); this.btnGeneEntity.TabIndex = 38; this.btnGeneEntity.Text = "生 成 Entity.java"; this.btnGeneEntity.UseVisualStyleBackColor = true; this.btnGeneEntity.Click += new System.EventHandler(this.btnGeneEntity_Click); // // btnGeneMapper // this.btnGeneMapper.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.btnGeneMapper.Location = new System.Drawing.Point(525, 128); this.btnGeneMapper.Name = "btnGeneMapper"; this.btnGeneMapper.Size = new System.Drawing.Size(312, 25); this.btnGeneMapper.TabIndex = 37; this.btnGeneMapper.Text = "生 成 Mapper.java"; this.btnGeneMapper.UseVisualStyleBackColor = true; this.btnGeneMapper.Click += new System.EventHandler(this.btnGeneMapper_Click); // // txtTabNS // this.txtTabNS.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.txtTabNS.Location = new System.Drawing.Point(525, 15); this.txtTabNS.Name = "txtTabNS"; this.txtTabNS.Size = new System.Drawing.Size(312, 26); this.txtTabNS.TabIndex = 40; this.txtTabNS.Text = "bd."; // // label1 // this.label1.AutoSize = true; this.label1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.label1.Location = new System.Drawing.Point(433, 20); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(88, 16); this.label1.TabIndex = 39; this.label1.Text = "表名前缀:"; // // FrmMyBatisPlus // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(852, 628); this.Controls.Add(this.txtTabNS); this.Controls.Add(this.label1); this.Controls.Add(this.btnGeneEntity); this.Controls.Add(this.btnGeneMapper); this.Controls.Add(this.btnNone); this.Controls.Add(this.btnAnti); this.Controls.Add(this.btnAll); this.Controls.Add(this.btnGenerate); this.Controls.Add(this.btnGeneAll); this.Controls.Add(this.txtMapperNS); this.Controls.Add(this.label2); this.Controls.Add(this.txtEntityNS); @@ -223,9 +272,13 @@ private System.Windows.Forms.Label label3; private System.Windows.Forms.TextBox txtMapperNS; private System.Windows.Forms.Label label2; private System.Windows.Forms.Button btnGenerate; private System.Windows.Forms.Button btnGeneAll; private System.Windows.Forms.Button btnAll; private System.Windows.Forms.Button btnAnti; private System.Windows.Forms.Button btnNone; private System.Windows.Forms.Button btnGeneEntity; private System.Windows.Forms.Button btnGeneMapper; private System.Windows.Forms.TextBox txtTabNS; private System.Windows.Forms.Label label1; } } JavaCode/FrmMyBatisPlus.cs
@@ -3,9 +3,12 @@ using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Windows.Forms; @@ -31,7 +34,8 @@ } #endregion // 135502,69701 29257,20582 #region 查询表结构:135502,69701 29257,20582 private void btnReadTab_Click(object sender, EventArgs e) { try @@ -39,7 +43,7 @@ string tabName = this.txtTabPre.Text.Trim(); string tabFilter = string.IsNullOrEmpty(tabName) ? "" : string.Format("and c.relname like '{0}%'", tabName); string sql = string.Format("select c.relname as \"tab\", cast(obj_description(c.oid) as varchar) as \"desc\", a.attnum as \"num\", a.attname as \"col\",concat_ws('', t.typname, SUBSTRING(format_type(a.atttypid, a.atttypmod) from '(.*)')) as \"type\", d.description as \"bak\" from pg_attribute a left join pg_description d on d.objoid = a.attrelid and d.objsubid = a.attnum left join pg_class c on a.attrelid = c.oid left join pg_type t on a.atttypid = t.oid where a.attnum >= 0 and reltype>0 and relnamespace in ({0}) {1} order by c.relname desc, a.attnum asc", this.txtNS.Text.Trim(), tabFilter); string sql = string.Format("select c.relname \"tab\", cast(obj_description(c.oid) as varchar) \"desc\", a.attnum \"num\", a.attname \"col\", t.typname \"type\", d.description \"bak\" from pg_attribute a left join pg_description d on d.objoid = a.attrelid and d.objsubid = a.attnum left join pg_class c on a.attrelid = c.oid left join pg_type t on a.atttypid = t.oid where a.attnum >= 0 and reltype>0 and relnamespace in ({0}) {1} order by c.relname desc, a.attnum asc", this.txtNS.Text.Trim(), tabFilter); DataTable dt = _dbHelper.GetDataTable(sql, null); _list = ModelHandler.FillModel<TabInfo>(dt); @@ -102,10 +106,273 @@ this.dgvTab.CurrentCell = this.dgvTab.Rows[1].Cells[0]; } } #endregion private void btnGenerate_Click(object sender, EventArgs e) #region 按钮事件 private void btnGeneMapper_Click(object sender, EventArgs e) { // try { string path = Path.Combine(baseDir, "BsGenerate\\Mapper"); List<string> names = GetTabList(); foreach (string name in names) { List<TabInfo> tabs = GetTabInfo(name); GenerateMapper(path, name, tabs); } OpenFolder(path); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void btnGeneEntity_Click(object sender, EventArgs e) { try { string path = Path.Combine(baseDir, "BsGenerate\\Entity"); List<string> names = GetTabList(); foreach (string name in names) { List<TabInfo> tabs = GetTabInfo(name); GenerateEntity(path, name, tabs); } OpenFolder(path); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void btnGeneAll_Click(object sender, EventArgs e) { try { string mapperPath = Path.Combine(baseDir, "BsGenerate\\Mapper"); string entityPath = Path.Combine(baseDir, "BsGenerate\\Entity"); List<string> names = GetTabList(); foreach (string name in names) { List<TabInfo> tabs = GetTabInfo(name); GenerateMapper(mapperPath, name, tabs); GenerateEntity(entityPath, name, tabs); } string path = Path.Combine(baseDir, "BsGenerate"); OpenFolder(path); } catch (Exception ex) { MessageBox.Show(ex.Message); } } #endregion #region 生成 Mapper private void GenerateMapper(string path, string name, List<TabInfo> tabs) { if (!Directory.Exists(path)) Directory.CreateDirectory(path); string tabName = this.txtTabNS.Text.Trim() + name; string shortName = NameConvert(name, true); string mapperNS = this.txtMapperNS.Text.Trim(); string mapperName = shortName + "Mapper"; string entityNS = this.txtEntityNS.Text.Trim(); string entityName = shortName + "Entity"; string bak = string.IsNullOrWhiteSpace(tabs[0].desc) ? shortName : tabs[0].desc.Replace("表", ""); string wkt = this.HasGeom(tabs) ? " /**\r\n" + " * 根据ID查询WKT\r\n" + " *\r\n" + " * @param gid\r\n" + " * @return\r\n" + " */\r\n" + " @Select(\"select st_astext(geom) geom from " + tabName + " where gid = #{gid}\")\r\n" + " String selectWktById(@Param(\"gid\") Integer gid);" : ""; string xml = File.ReadAllText(Path.Combine(baseDir, "BsTemplate\\Mapper.java")); xml = xml .Replace("{mapperNS}", mapperNS) .Replace("{mapperName}", mapperName) .Replace("{entityNS}", entityNS) .Replace("{entityName}", entityName) .Replace("{wkt}", wkt) .Replace("{bak}", bak); string fileName = shortName + "Mapper.java"; File.WriteAllText(Path.Combine(path, fileName), xml); } #endregion #region 生成 Entity private void GenerateEntity(string path, string name, List<TabInfo> tabs) { if (!Directory.Exists(path)) Directory.CreateDirectory(path); string tabName = this.txtTabNS.Text.Trim() + name; string shortName = NameConvert(name, true); string entityNS = this.txtEntityNS.Text.Trim(); string entityName = shortName + "Entity"; string bak = string.IsNullOrWhiteSpace(tabs[0].desc) ? shortName : tabs[0].desc.Replace("表", ""); long uid = (long)Math.Floor((new Random()).NextDouble() * 1000000000000000000D); string xml = File.ReadAllText(Path.Combine(baseDir, "BsTemplate\\Entity.java")); xml = xml .Replace("{entityNS}", entityNS) .Replace("{entityName}", entityName) .Replace("{bak}", bak) .Replace("{tabName}", tabName) .Replace("{uid}", uid.ToString()); StringBuilder sb = new StringBuilder(); foreach (TabInfo ti in tabs) { string type = GetJavaType(ti); if (ti.col == "gid") sb.Append("\r\n @TableId(type = IdType.AUTO)"); if (ti.col == "geom") sb.Append("\r\n @TableField(select = false)"); if (ti.col == "class") { sb.Append("\r\n @TableField(value = \"class\")"); ti.col = "clazz"; } string colName = NameConvert(ti.col, false); sb.Append("\r\n private " + type + " " + colName + ";\r\n"); } sb.Append("\r\n public " + entityName + "() {\r\n }\r\n"); foreach (TabInfo ti in tabs) { string type = GetJavaType(ti); string col1 = NameConvert(ti.col, true); string col2 = NameConvert(ti.col, false); sb.Append("\r\n public " + type + " get" + col1 + "() {\r\n return " + col2 + ";\r\n }\r\n"); sb.Append("\r\n public void set" + col1 + "(" + type + " " + col2 + ") {\r\n this." + col2 + " = " + col2 + ";\r\n }\r\n"); } sb.Append("}\r\n"); sb.Insert(0, xml); string fileName = shortName + "Entity.java"; File.WriteAllText(Path.Combine(path, fileName), sb.ToString()); } #endregion #region 公共方法 private List<string> GetTabList() { List<string> list = new List<string>(); for (int i = 0, c = this.tabList.SelectedItems.Count; i < c; i++) { string item = this.tabList.SelectedItems[i] as String; if (!string.IsNullOrEmpty(item)) { list.Add(item); } } return list; } private List<TabInfo> GetTabInfo(string name) { List<TabInfo> tabs = (from p in _list where p.tab == name orderby p.num select p).ToList<TabInfo>(); return tabs; } private static string NameConvert(string name, bool firstUpper) { string[] strs = name.Split(new char[] { '_' }); string str = ""; for (int i = 0, c = strs.Length; i < c; i++) { if (i == 0 && !firstUpper) { str += strs[i]; continue; } str += ToUpperFirst(strs[i]); } return str; } public static string ToUpperFirst(string str) { return Regex.Replace(str, @"^\w", t => t.Value.ToUpper()); } private string GetJavaType(TabInfo ti) { switch (ti.type) { case "timestamp": return "Timestamp"; case "float4": // float return "Float"; case "float8": // double return "Double"; case "bool": // boolean return "Boolean"; case "numeric": return "BigDecimal"; case "int8": // long return "Long"; case "int2": case "int4": // int return "Integer"; default: return "String"; } } private bool HasGeom(List<TabInfo> tabs) { foreach (TabInfo ti in tabs) { if (ti.col == "geom") return true; } return false; } private static void OpenFolder(string folderPath) { if (string.IsNullOrEmpty(folderPath)) return; Process process = new Process(); ProcessStartInfo psi = new ProcessStartInfo("Explorer.exe"); psi.Arguments = folderPath; process.StartInfo = psi; try { process.Start(); } catch (Exception ex) { throw ex; } finally { process.Close(); } } private String QueryPrimaryKey(string tab) @@ -116,5 +383,6 @@ return obj == null ? null : obj.ToString(); } #endregion } } JavaCode/JavaCode.csproj
@@ -82,6 +82,7 @@ </EmbeddedResource> <EmbeddedResource Include="FrmSys.resx"> <DependentUpon>FrmSys.cs</DependentUpon> <SubType>Designer</SubType> </EmbeddedResource> <EmbeddedResource Include="FrmMyBatisPlus.resx"> <DependentUpon>FrmMyBatisPlus.cs</DependentUpon>