开发自己趁手的开发的工具

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qin_zhangyongheng/article/details/80320844

       不知道各位有没有自己经常用的工具呢,相比肯定是有的。这里说的工具是开发中使用的工具,比如我们项目中会用到PD来查看数据字典,但是还是感觉不方便,第一是软件体积大,打开慢,查找也不方便。

       如果我说可以在web页面上看到你需要的数据字典,数据结构,你会不会感兴趣呢?现在呢,我作为抛砖引玉介绍一款工具能够在web上浏览数据表结构的工具DBNote。先来看看功能示意图:


       首先你需要配置需要连接的数据库,目前支持MySQL,SQL Server(当然该项目是开源的你可以在此基础之上再添加对应的数据库即可),选择数据库类型,是否启用,然后配置好你数据库连接字符串。就这么多就够了,然后刷新页面,你就可以在左侧看到你需要的数据库和表了,点击其中一个表便会打开该表的设计详情,是不是很方便呢?

        当然,如果你同时启用了MySQL和SQL Server。这都是不影响的,只要你有多少有效的配置都能全部拉出来哦。


说完了数据字典工具,那你是不是经常会使用自动代码生成工具呢?比如Java里面的mybatis阔以自动生成代码,C#中的T4模板也可以自动生成代码,这里只是看个人的喜好或者说自己去实现一种自动生成代码的工具,你自己最了解,最放心使用,还有就是就个人经验来说,我不喜欢写T4模板里面的模板代码。这里介绍一个工具:CodeBuilder,是通过NVelocity作为模板进行生成的工具。具体要做的就是:

  1. 安装
    你可以从这里下载二进制可执行文件包然后解压即可
  2. 配置数据源
    双击CodeBuilder目录下codebuilder.exe文件运行应用程序, 然后在菜单栏中选择(工具->数据源配置),新增你需要的数据源,然后"确定"
    qs-img1
  3. 导入数据源中表与视图 在菜单栏中选择(文件->从数据源导出->选择指定数据库)然后等待几秒中将列出当前数据库中所有的表及视图
    qs-img2
  4. 生成代码
    a.选择全部或指定几个表及视图
    b.选择要生成代码的程序语言(如c#/java/ruby/php/xml等)
    c.设置代码的根命名空间(如:com.easytoolsoft.codebuilder)
    d.设置表名前缀、代码作者、版本(这三个是可选设置)
    e.选择一个或多个代码模板,自定义模板请参考制作代码模板
    f.如果你想在生成代码时去掉表或视图名称前辍(你先必须在步聚d中设置好前辍名称)或想生成后的代码命名方式为驼峰式(Camel-Case)(如表名:easy_tools_soft 将变成 EasyToolsSoft), 这时你应该选中"是否忽略表前辍" 或 "是否使用驼峰式命名"
    qs-img3
    g.点击 "生成" 按钮执行代码生成,然后点击生成的文件可以进入的生成代码的目录
    qs-img4

自己创建模板:

1.使用velocity语言创建代码模板文件

创建一个UTF-8编码格式的文本文件(如:example.txt),从TDO对象中读取模板中需要使用的内容
qs-img5
2.模板数据对象(TDO)
a.TDO属性
名称类型说明
Namestring模板数据名称
Languagestring程序设计语言名称 (如:csharp/java/ruby/php/xml etc.)
Databasestring数据库名称 (如:mysql5/sqlserver2000/2005/2008/oralce etc.)
Packagestring命名空间或包名 (如:com.easytoolsoft)
TablePrefixstring表名前辍(如:cb_table表的前辍为"cb")
Authorstring代码作者
Versionstring代码版本
TemplateEnginestring模板引擎名称,默认为"nvelocity"
TemplateNamestring模板显示名称(如:example.java.nv 模板文件的显示名为"example")
Prefixstring模板前辍
Suffixstring模板后辍
Encodingstring生成的代码文件字符集编码(如:utf8/utf7/ascii etc.)
TemplateFileNamestring模板对应的文件名(如:example.java.nv)
CodeFileNamestring生成的代码文件名(如:Example.java)
IsOmitTablePrefixbool生成代码时是否忽略表前辍(如:cb_table表生成代码时将去掉"cb")
IsCamelCaseNamebool是否驼峰化(Camel-Case)命名(如:cb_table -> CbTable)
ModelObjectobject模型对象,对应一个数据库的表或视图.相关属性请参考:b.ModelObject属性

b.ModelObject属性

名称类型说明
Idstring对应数据库中的表或视图表(如:cb_table)
DisplayNamestring显示名,默认为属性"Name"的值
Namestring表或视图首字母大写驼峰式(Camel-Case)名.(如:cb_table -> CbTable)
OriginalNamestring表或视图在数据库中的名称(如:cb_table)
Commentstring表或视图在数据库中的注释
MetaTypeNamestring当前ModelObject元数据类型名:table
ColumnsDictionary[string,Column]表或视图中所有列集合,相关属性请参考:c.Column Proprities
PrimaryKeysDictionary[string,Column]表中所有主键列集合
KeysDictionary[string,Column]表中所有非主键列集合

c.Column属性

名称类型说明
Idstring对应数据库中表或视图的列名 (如:first_name)
DisplayNamestring列显示名,默认为属性"Name"的值
Namestring列名,首字母大写驼峰式(Camel-Case)名(如:first_name -> FirstName)
LowerCamelNamestring列名,首字母小写驼峰式(Camel-Case)名(如:first_name -> firstName)
OriginalNamestring原始列名 (如:first_name)
Commentstring列说明
DataTypestring列在数据库中的数据类型(如: mysql int/bigint/varchar etc.)
DefaultValuestring列在数据库中的默认值
LanguageTypestring列在对应的程序设计语言(如:c#/java/ruby etc.)中的数据类型(如: C# int/long/string etc.)
LanguageDefaultValuestring列在对应的程序设计语言(如:c#/java/ruby etc.)中的默认值
Lengthint列在数据库中数据类型对应的长度
Ordinalint列在数据库中表或视图的顺序
IsAutoIncrementedbool列是否为自增列
IsNullablebool列是否可为空
IsComputedbool列是否为计算列
HasDefaultbool列是否有默认值
MetaTypeNamestring元数据类型名,值为"column"

3.添加模板 把创建好的代码模板文件加入到CodeBuilder的模板列表中 qs-img6


     有了以上两个得力的工具,那么肯定少不了自己的框架了啊,这里推荐一款轻量级的框架:FreshCommonUtilityNet,该框架已经发布到Nuget上,各位只需要在使用的时候进行Nuget安装即可。

       首先看下里面的内容,你就知道它有多么实用了,包含了你日常开发中遇到几乎80%的基础返回,已经一个轻量级的Dapper组件扩展。


使用起来也是异常的方便简介,以两个方法的使用为例:

        /// <summary>
        /// list to datatable slowly
        /// </summary>
        public void ToDataTableSlowlyTest()
        {
            var filePath = "..\\..\\TestUseFile\\TestExportLessData.xlsx";
            var excelHelperTwo = new NpoiHelper(filePath);
            string message;
            var tableTwo = excelHelperTwo.ExcelToDataTable("sheet1", true, out message);
            List<PersonGattScheduleInfoDto> personGantScheduleInfoDtosList =
                DataTypeConvertHelper.ToList<PersonGattScheduleInfoDto>(tableTwo);
            var storgeTable = DataTypeConvertHelper.ToDataTable(personGantScheduleInfoDtosList);
            tableTwo.Rows.Count.IsEqualTo(storgeTable.Rows.Count);
            var i = 5;
            var j = 4;
            tableTwo.Rows[i][j].IsEqualTo(storgeTable.Rows[i][j]);
        }

        /// <summary>
        /// list to datatable fast
        /// </summary>
        public void ToDataTableTest()
        {
            var filePath = "..\\..\\TestUseFile\\TestExport.xlsx";
            var excelHelperTwo = new NpoiHelper(filePath);
            string message;
            var tableTwo = excelHelperTwo.ExcelToDataTable(null, true, out message);
            List<PersonGattScheduleInfoDto> personGantScheduleInfoDtosList =
                DataTypeConvertHelper.ToList<PersonGattScheduleInfoDto>(tableTwo);
            var storgeTable = DataTypeConvertHelper.ToDataTable(personGantScheduleInfoDtosList);
            tableTwo.Rows.Count.IsEqualTo(storgeTable.Rows.Count);
            var i = 5;
            var j = 4;
            tableTwo.Rows[i][j].IsEqualTo(storgeTable.Rows[i][j]);
        }

这些,都是开源的,你可以随意使用。

有了这三个,相信你的开发速度会大大提升了。然后你会说,我开发完了,如何发布我的代码呢,别担心,Fresh君也给你推荐一款自动发布工具天枰座(Libra),不过这个我只提供代码地址了,如果需要的小伙伴可以联系我。1174632606 秋秋号,微信同号。

差点忘记了,还没有贴出开源地址呢:

DBNote:https://github.com/FreshManIT/DBNote

CodeBuilder:https://github.com/FreshManIT/CodeBuilder

FreshCommonUtilityNet:https://github.com/Yinghuochongxiaoq/FreshCommonUtilityNet

Libra:https://github.com/FreshManIT/Libra

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页