vue代码生成器可视化界面_手把手教你基于SqlSugar4编写一个可视化代码生成器(生成实体,以SqlServer为例,文末附源码)...
在開發(fā)過程中免不了創(chuàng)建實體類,字段少的表可以手動編寫,但是字段多還用手動創(chuàng)建的話不免有些浪費時間,假如一張表有100多個字段,手寫有些不現(xiàn)實。
這時我們會借助一些工具,如:動軟代碼生成器、各種ORM框架自帶的代碼生成器等等,都可以使用。
我們現(xiàn)在就基于SqlSugar(ORM框架)自己動手制造一個輪子,以SqlServer為例。我們先看一下成品效果,
使用流程:
配置好數(shù)據(jù)庫鏈接,點擊【鏈接數(shù)據(jù)庫】獲取指定服務器上的數(shù)據(jù)庫名,點擊數(shù)據(jù)庫名,動態(tài)獲取數(shù)據(jù)庫下面的所有表,
點擊數(shù)據(jù)表,如果生成過了的會自動獲取生成的實體,如果沒有生成過,點擊【生成實體】自動生成顯示,直接復制即可使用。
注:server=xxx.xxx.x.xxx這里如果是本地沒有配置的話直接server=.即可。
開發(fā)環(huán)境:
編譯器:Visual Studio 2017
運行環(huán)境:windows7 x64
數(shù)據(jù)庫:SqlServer2012
代碼實現(xiàn)步驟:
一、創(chuàng)建一個ASP.NET Web應用,命名為GenerateEntity
?
二、應用SqlSugar動態(tài)鏈接庫
三、編寫代碼
這里分為前端和后端,前端頁面展示,后端后臺邏輯(注:由于我們是代碼展示,所以就不搞三層架構、工廠模式這些,直接在控制器中完成,有需要的同學可以根據(jù)項目需求進行更改)
內部實現(xiàn)邏輯:
在頁面上配置數(shù)據(jù)庫鏈接,點擊【鏈接數(shù)據(jù)庫】按鈕獲取指定數(shù)據(jù)庫的所有數(shù)據(jù)庫名顯示在左邊;
點擊左邊的數(shù)據(jù)庫名稱,動態(tài)獲取指定數(shù)據(jù)庫下面所有的表顯示出來;
點擊表名,生成過的就顯示生成的實體,沒有的則點擊【生成實體】按鈕生成(支持生成單表和數(shù)據(jù)庫表全部生成);
這里我直接貼出代碼,直接拷貝即可使用:
前端html頁面
@{ ViewBag.Title = "Home Page";}<script src="~/Scripts/jquery-3.3.1.js">script><div style="margin-top:10px;font-family:'Microsoft YaHei';font-size:18px; "> <div style="height:100px;width:100%;border:1px solid gray;padding:10px"> <div> <span>鏈接數(shù)據(jù)庫:span> <input style="width:800px;max-width:800px;" id="Link" value="server=xxx.xxx.x.xxx;uid=sa;pwd=xxx" /> <a href="javascript:void(0)" onclick="LinkServer()">鏈接數(shù)據(jù)庫a> div> <div style="margin-top:10px"> <span>數(shù)據(jù)庫名:span> <input style="color:red;font-weight:600" id="ServerName" /> <span>表名:span> <input style="color:red;font-weight:600" id="TableName" /> <span>生成類型:span> <select id="type"> <option value="0">生成單個表option> <option value="1">生成所有表option> select> <a href="javascript:void(0)" onclick="GenerateEntity()" style="margin-left:20px;font-weight:600;">生成實體a> <br /> div> div> <div style="height:720px;width:100%;"> <div style="height:100%;width:40%;float:left; border:1px solid gray;font-size:20px"> <div id="leftserver" style="float:left;border:1px solid gray;height:100%;width:40%;padding:10px;overflow: auto;"> div> <div id="lefttable" style="float:left;border:1px solid gray;height:100%;width:60%;padding:10px;overflow: auto;"> div> div> <div style="height:100%;width:60%;float:left;border:1px solid gray;overflow: auto;"> <textarea style="width:100%;height:100%;max-width:10000px" id="righttable">textarea> div> div>div><script type="text/javascript"> //鏈接數(shù)據(jù)庫 function LinkServer() { $.ajax({ url: "/Home/LinkServer", data: { Link: $("#Link").val() }, type: "POST", async: false, dataType: "json", success: function (data) { if (data.res) { if (data.info != "") { $("#leftserver").html(""); var leftserver = "數(shù)據(jù)庫名"; var info = eval("(" + data.info + ")"); for (var i = 0; i < info.length; i++) { leftserver += " + info[i].Name + "')\">" + info[i].Name + ""; } $("#leftserver").html(leftserver); } } else { alert(data.msg); } } }); } //查詢指定數(shù)據(jù)庫的表 function leftserver(Name) { $("#ServerName").val(Name) $.ajax({ url: "/Home/GetTable", data: { Link: $("#Link").val(), Name: Name }, type: "POST", async: false, dataType: "json", success: function (data) { if (data.res) { if (data.info != "") { $("#lefttable").html(""); var lefttable = "表名"; var info = eval("(" + data.info + ")"); for (var i = 0; i < info.length; i++) { lefttable += " + info[i].Name + "')\">" + info[i].Name + "
"; } $("#lefttable").html(lefttable); } } else { alert(data.msg); } } }); } //查詢指定數(shù)據(jù)庫的表 function lefttable(Name) { $("#TableName").val(Name); $.ajax({ url: "/Home/GetGenerateEntity", data: { TableName: Name }, type: "POST", async: false, dataType: "json", success: function (data) { if (data.res) { document.getElementById("righttable").innerHTML = data.info; } else { alert(data.msg); } } }); } //生成實體 function GenerateEntity() { $.ajax({ url: "/Home/GenerateEntity", data: { Link: $("#Link").val(), Name: $("#ServerName").val(), TableName: $("#TableName").val(), type: $("#type").val() }, type: "POST", async: false, dataType: "json", success: function (data) { if (data.res) { document.getElementById("righttable").innerHTML = data.info; } else { alert(data.msg); } } }); }script>
后端控制器數(shù)據(jù)
using SqlSugar;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Web;using System.Web.Mvc;namespace GenerateEntity.Controllers{ public class HomeController : Controller { public ActionResult Index() { return View(); } public ActionResult About() { ViewBag.Message = "Your application description page."; return View(); } public ActionResult Contact() { ViewBag.Message = "Your contact page."; return View(); } //鏈接數(shù)據(jù)庫 public JsonResult LinkServer(string Link) { ResultInfo result = new ResultInfo(); try { //配置數(shù)據(jù)庫連接 SqlSugarClient db = new SqlSugarClient( new ConnectionConfig() { ConnectionString = ""+ Link + ";database=master", DbType = DbType.SqlServer,//設置數(shù)據(jù)庫類型 IsAutoCloseConnection = true,//自動釋放數(shù)據(jù)務,如果存在事務,在事務結束后釋放 InitKeyType = InitKeyType.Attribute //從實體特性中讀取主鍵自增列信息 }); string sql = @"SELECT top 100000 Name FROM Master..SysDatabases ORDER BY Name"; //查詢所有鏈接的所有數(shù)據(jù)庫名 var strList = db.SqlQueryable(sql).ToList(); result.info = Newtonsoft.Json.JsonConvert.SerializeObject(strList); result.res = true; result.msg = "鏈接成功!"; } catch (Exception ex) { result.msg = ex.Message; } return Json(result, JsonRequestBehavior.AllowGet); } //根據(jù)數(shù)據(jù)庫名查詢所有表 public JsonResult GetTable(string Link,string Name) { ResultInfo result = new ResultInfo(); try { //配置數(shù)據(jù)庫連接 SqlSugarClient db = new SqlSugarClient( new ConnectionConfig() { ConnectionString = "" + Link + ";database="+ Name + "", DbType = DbType.SqlServer,//設置數(shù)據(jù)庫類型 IsAutoCloseConnection = true,//自動釋放數(shù)據(jù)務,如果存在事務,在事務結束后釋放 InitKeyType = InitKeyType.Attribute //從實體特性中讀取主鍵自增列信息 }); string sql = @"SELECT top 10000 Name FROM SYSOBJECTS WHERE TYPE='U' ORDER BY Name"; //查詢所有鏈接的所有數(shù)據(jù)庫名 var strList = db.SqlQueryable(sql).ToList(); result.info = Newtonsoft.Json.JsonConvert.SerializeObject(strList); result.res = true; result.msg = "查詢成功!"; } catch (Exception ex) { result.msg = ex.Message; } return Json(result, JsonRequestBehavior.AllowGet); } //生成實體 public JsonResult GenerateEntity(string Link, string Name,string TableName,string type) { ResultInfo result = new ResultInfo(); try { //配置數(shù)據(jù)庫連接 SqlSugarClient db = new SqlSugarClient( new ConnectionConfig() { ConnectionString = "" + Link + ";database=" + Name + "", DbType = DbType.SqlServer,//設置數(shù)據(jù)庫類型 IsAutoCloseConnection = true,//自動釋放數(shù)據(jù)務,如果存在事務,在事務結束后釋放 InitKeyType = InitKeyType.Attribute //從實體特性中讀取主鍵自增列信息 }); string path = "C:\\Demo\\2"; if (type == "0") { path = "C:\\Demo\\2"; db.DbFirst.Where(TableName).CreateClassFile(path); result.info = System.IO.File.ReadAllText(@"" + path + "\\" + TableName + ".cs" + "", Encoding.UTF8); } else if (type == "1") { path = "C:\\Demo\\3"; db.DbFirst.IsCreateAttribute().CreateClassFile(path); result.info = ""; } result.res = true; result.msg = "生成成功!"; } catch (Exception ex) { result.msg = ex.Message; } return Json(result, JsonRequestBehavior.AllowGet); } //生成全部表時查看 public JsonResult GetGenerateEntity(string TableName) { ResultInfo result = new ResultInfo(); try { string path = "C:\\Demo\\3"; result.info = System.IO.File.ReadAllText(@"" + path + "\\" + TableName + ".cs" + "", Encoding.UTF8); result.res = true; result.msg = "查詢成功!"; } catch (Exception ex) { result.msg = ex.Message; try { if (result.msg.Contains("未能找到文件")) { string path = "C:\\Demo\\2"; result.info = System.IO.File.ReadAllText(@"" + path + "\\" + TableName + ".cs" + "", Encoding.UTF8); result.res = true; result.msg = "查詢成功!"; } } catch (Exception) { result.msg = ex.Message; } } return Json(result, JsonRequestBehavior.AllowGet); } //數(shù)據(jù)庫名 public class databaseName { public string Name { get; set; } } //封裝返回信息數(shù)據(jù) public class ResultInfo { public ResultInfo() { res = false; startcode = 449; info = ""; } public bool res { get; set; } //返回狀態(tài)(true or false) public string msg { get; set; } //返回信息 public int startcode { get; set; } //返回http的狀態(tài)碼 public string info { get; set; } //返回的結果(res為true時返回結果集,res為false時返回錯誤提示) } }}這樣一套可視化代碼生成器就出來了,我們把他發(fā)布到IIS上面,然后設置為瀏覽器標簽(收藏),這樣就可以快捷使用了。
我們運行一下看看,是不是感覺很方便呀!
歡迎關注訂閱我的微信公眾平臺【熊澤有話說】,更多好玩易學知識等你來取作者:熊澤-學習中的苦與樂公眾號:熊澤有話說出處:?https://www.cnblogs.com/xiongze520/p/13181241.html創(chuàng)作不易,版權歸作者和博客園共有,轉載或者部分轉載、摘錄,請在文章明顯位置注明作者和原文鏈接。??  | 
總結
以上是生活随笔為你收集整理的vue代码生成器可视化界面_手把手教你基于SqlSugar4编写一个可视化代码生成器(生成实体,以SqlServer为例,文末附源码)...的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: python博客开发教程_Django
 - 下一篇: 打印图片预览时图片显示不出来_办公小技巧