Database2Sharp版本更新之自定义模板生成

简介:
代码生成工具一直是很多从事开发人员的必备,一般开发人员都会选择一款高效、适合自己开发模式的代码生成工具,我也不例外,我一直让我的Database2Sharp( http://www.iqidi.com/database2sharp.htm)代码生成工具围绕我的开发框架来生成代码,至今已经经过快7个年头的洗礼,主要是提供高效、快速的一键生成整个项目框架源码的操作。

代码生成工具Database2Sharp自一开始,就采用基于模板方式的代码生成方式,这样提高生成效率,并且减少维护成本(相对某些硬编码代码生成的方式更优),方便用户对模板进行适当的修改等特点,不过虽然是提供了模板修改的功能,但是由于在工具的主界面上,并未提供对自定义模板文件的管理,因此以前的版本一直没有完成用户自定义模板管理维护的功能,本次版本更新就是弥补这一不足,发挥模板应有的魅力和功能。

在实际开发当中,自定义模板生成是很多代码生成工具生成代码的重要补充,例如有些项目代码片段需要(例如控件赋值语句,或者控件数据显示语句等),如果能通过自定义模板方式,利用模板引擎的灵活特点,以及已有数据库的结构信息,就很方便生成重复性强、有一定规律的代码。

因此,本次Database2Sharp版本更新,主要就是提供一个对自定义模板管理,方便利用自定义模板灵活、高效的特点,并且利用后台数据库表、字段等信息,为实际的项目代码片段生成服务,本次还调整了整体的软件界面布局,利用成熟的Weifenluo布局控件,更好展示多文档的信息。 


 我们来看看自定义代码生成模块的功能是如何实现的,首先提供一个自定义模板列表进行维护,可以通过右键菜单进行添加、修改、重命名、删除等操作,模板代码可以进行【直接执行模板】和【选表进行代码生成】两种方式。

 

 利用【选表进行代码生成】方式,可以很好利用后台的数据库表、字段等信息,结合模板生成高效的代码,如下所示。

 

另外,为了方便大家对模板引擎NVelocity的了解,在软件工具安装的时候,附带了几个常见的例子,如下所示。

 

 

 例子的代码大致如下所示,主要是让大家快速了解Nvelocity的模板语言VTL的使用。如果对模板引擎更加深入的了解,可以查看我之前的随笔《强大的模板引擎开源软件NVelocity》进一步了解。

遍历及注释,赋值语句例子。 

##Foreach语法操作函数

# set( $criteria = [ " name "" address "] )
# foreach( $criterion  in $criteria )
    $criterion
#end


##注释操作

注释
单行注释
## This  is a single line comment

多行注释 
#*
 Thus begins a multi-line comment. Online visitors won ' t
 see  this text because the Velocity Templating Engine will
 ignore it.
*#

条件结构的例子 

##此处为注释说明
##简单例子(主要规则:引用以$开头用于取得什么东西,而指令以# 开始用于做什么事情)
##在VTL中,所有变量标识符的开头要加上$字符,如$Name,也可以用一种更加明确的方法表示,例如${name}。

# set($foo =  false)
#if ($foo)
     this  is  true
#elseif ($bar)
     this  is  false
#elseif ( true)
     this should be followed by two blank lines
#end

##  this  is a single line comment

#*
this  is a multi line comment
#if (
*#


# set($user =  " jason ")
# set($login =  false)
# set($count =  5)

#if ($user == "jason")
    the user $user  is logged  in!
#end

#if ($count == 5)
    the count  is  5!
#end

#if ($login == false)
    the user isn ' t logged in.
#end

#if ($count != 3)
    \$count  is not equal to  3

#end 

宏脚本例子 

## #macro 脚本元素允许模板设计者在VTL 模板中定义重复的段。 
## Velocimacros 不管是在复杂还是简单的场合都非常有用。
## 下面这个Velocimacro,仅用来节省击键和减少排版错误,介绍了一些NVelocity宏的概念。 
## 可以带参数,参数放在宏名称的后面,空格隔开

#macro( d )
<tr><td></td></tr>
#end
 

#d(

 以及一些常用的赋值及数据显示代码片段

         ///   <summary>
        
///  初始化
        
///   </summary>
        
///   <param name="info"> 实体类信息 </param>
         private  void InitData(${ClassName}Info info)
        {
# foreach($ColumnInfo  in ${TableInfo.ColumnList.Values})        
#if(${ColumnInfo.AutoIncrement} == false)    
#if(${ColumnInfo.NetType} == "System.String" )
             this.txt${ColumnInfo.Name.Alias.ToCapit()}.Text = info.${ColumnInfo.Name.Alias.ToCapit()};
#elseif(${ColumnInfo.NetType} ==  " System.DateTime ")
             this.txt${ColumnInfo.Name.Alias.ToCapit()}.Text = info.${ColumnInfo.Name.Alias.ToCapit()}.ToShortDateString();
#else
             this.txt${ColumnInfo.Name.Alias.ToCapit()}.Text = info.${ColumnInfo.Name.Alias.ToCapit()}.ToString();
#end
#end # #endif
#end
        }        
                
         ///   <summary>
        
///  获取数据
        
///   </summary>  
         private ${ClassName}Info GetData()
        { 
            ${ClassName}Info info =  new ${ClassName}Info();
# foreach($ColumnInfo  in ${TableInfo.ColumnList.Values})        
#if(${ColumnInfo.AutoIncrement} == false)     
#if(${ColumnInfo.NetType} == "System.Decimal" )
            info.${ColumnInfo.Name.Alias.ToCapit()} = Helper.SafeConvertDecimal( this.txt${ColumnInfo.Name.Alias.ToCapit()}.Text);
#elseif(${ColumnInfo.NetType} ==  " System.DateTime ")    
            info.${ColumnInfo.Name.Alias.ToCapit()} = Helper.SafeConvertDate( this.txt${ColumnInfo.Name.Alias.ToCapit()}.Text);        
#else
            info.${ColumnInfo.Name.Alias.ToCapit()} =  this.txt${ColumnInfo.Name.Alias.ToCapit()}.Text;   
#end          
#end # #endif
#end

         } 

 当然,了解这些可能还不够,还需要了解模板后台,能够利用的数据属性等信息,包括数据库、表、字段等相关的属性,方便在模板引擎中进行调用,生成更加强大的代码片段。

软件安装后,有一个帮助文件,是提供给开发者进行了解模板后台数据的相关属性和方法的,如下所示。

 

 运行后如下所示:

 

 除了以上新增的功能外,一键生成基于我的Winform框架结构的项目代码,是最为重要的功能,可以体验一下。另外,代码生成工具生成的数据库文档,快速生成实体类信息等模块,也是开发非常常用的功能,如果想了解更加关于我的代码生成工具的信息,可以参考我博客里面的标签【代码生成工具】。

本文转自博客园伍华聪的博客,原文链接:Database2Sharp版本更新之自定义模板生成,如需转载请自行联系原博主。



目录
相关文章
|
SQL 测试技术 数据库
一起谈.NET技术,使用VS2010的Database项目模板统一管理数据库对象
  Visual Studio 2010 有一个数据库项目模板:Visual Studio Database Project(以下简称VSDP),VS 2003/2005/2008也有类似的项目,在VS2010上的得到了很大的加强,现在还具备了智能感知,构建时验证和自动部署功能,VSDP是针对典型的数据库开发任务而设计的,可以对原有数据库反向工程,添加表,存储过程和其他数据库项目,而且有选择性地将修改部署到目标数据库中。
1191 0
|
SQL 测试技术 数据库
使用VS2010的Database项目模板统一管理数“.NET研究”据库对象
  Visual Studio 2010 有一个数据库项目模板:Visual Studio Database Project(以下简称VSDP),VS 2003/2005/2008也有类似的项目,在VS2010上的得到了很大的加强,现在还具备了智能感知,构建时验证和自动部署功能,VSDP是针对典型的数据库开发任务而设计的,可以对原有数据库反向工程,添加表,存储过程和其他数据库项目,而且有选择性地将修改部署到目标数据库中。
816 0
|
1月前
|
Oracle 关系型数据库 Linux
服务器Centos7 静默安装Oracle Database 12.2
服务器Centos7 静默安装Oracle Database 12.2
83 0
|
4月前
|
Oracle 关系型数据库 数据库
windows Oracle Database 19c 卸载教程
打开任务管理器 ctrl+Shift+Esc可以快速打开任务管理器,找到oracle所有服务然后停止。 停止数据库服务 在开始卸载之前,确保数据库服务已经停止。你可以使用以下命令停止数据库服务: net stop OracleServiceORCL Universal Installer 卸载Oracle数据库程序 一般情况运行Oracle自带的卸载程序,如使用Universal Installer 工具卸载。 点击开始菜单找到Oracle,然后点击Oracle安装产品,再点击Universal Installer。 点击之后稍等一会然后会进入进入下图界面,点击卸载产品。 选中要删除的Orac
117 1
|
5月前
|
存储 Oracle 关系型数据库
windows 使用 Oracle Database 19c
Oracle数据库是由美国Oracle Corporation(甲骨文公司)开发和提供的一种关系型数据库管理系统,它是一种强大的关系型数据库管理系统(RDBMS)。它使用表格(表)组织和存储数据,通过SQL语言进行数据管理。数据以表格形式存储,表之间可以建立关系。支持事务处理、多版本并发控制、安全性和权限控制。具有高可用性、容错性,支持分布式数据库和可扩展性。Oracle Corporation提供全面的支持和服务,使其成为企业级应用的首选数据库系统。
60 0
|
10月前
|
Oracle 关系型数据库 Linux
服务器Centos7 静默安装Oracle Database 12.2(下)
服务器Centos7 静默安装Oracle Database 12.2(下)
238 0
|
10月前
|
Oracle 安全 关系型数据库
服务器Centos7 静默安装Oracle Database 12.2(上)
服务器Centos7 静默安装Oracle Database 12.2(上)
92 0
|
10月前
|
存储 Oracle 关系型数据库

热门文章

最新文章