Power Designer导出实体类和NHibernate xml文件
Power Designer导出实体类和NHibernate xml文件
今天研究了一下通过PowerDesigner生成实体类和NHibernate所需要的xml文件,方法是通过Power Designer的向对象模型 (OOM) 导出并配置相关模板,具体操作步骤如下:
第一步:创建OOM
在PowerDesigner中创建面向对象模型 (OOM)。
我首先创建物理数据模型 (PDM),然后在 Tools → Generate Object-Oriented Model 做了转换。

第二步:配置导出实体模板文件
菜单位置:Language → Edit Current Object Language
General:C# 2::Profile\Attribute\Templates\definition

我对模板进行了简单修改,添加了一行空格和 { get; set; }。又对文件头和字段描述的格式做了修改。
DefaultHeader
位置在:C# 2::Profile\Classifier\Templates\DefaultHeader

写自己的代码:

// --------------------------------------------------------------------------------------------------------------------
// <copyright file="%sourceFilename%" company="">
// XXXX系统
// </copyright>
// <summary>
// %Comment%
// </summary>
// --------------------------------------------------------------------------------------------------------------------

[%comment%\n]\
位置在:C# 2::Profile\Shared\Templates\comment

写自己的代码:
/// <summary>
/// %CurrentLine%
/// </summary>
提示:在做类时只有把Comment字段填上,导出是才会有字段描述。

对命名空间进行配置,我直接写到了 source 里面感觉不是太合适。
C# 2::Profile\Classifier\Templates\source

现在就可以将实体导出了。
菜单位置:Language → Generate C# 2 Code

第二步:配置导出NHibernated的xml模板文件
这个是通过在网上查资料学来的,
感谢:用Powerdesigner生成NHebernate的MAP文件
只是他没有附图,让人找不到位置,我也研究了一个下午才找到的,以下参数命名仍采用他的。
1.还是打开 Object Language Properties
菜单位置:Language → Edit Current Object Language
在 C# 2::Profile\Classifier\Generated Files ,创建一个 hbm.xml 文件。

Name: hbm.xml
FileName:%topContainerCode%.hbm.xml
Comment:
.if (%isGenerated%)
.set_object(_usingContext,,new)
[\ %NHebernateHead%\n]\
%NHebernateBody% \n
%NHebernateFoot%
.endif
%NHebernateBody%
2.设置%NHebernateBody%模板的内容
在 C# 2::Profile\Classifier\Templates ,新建一个模板 NHebernateBody


<?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="%Parent.path%" namespace="%Parent.path%">
<class name="%sourceFilename%" table="%sourceFilename%" lazy="true" >
<id name="ID" column="ID" type="Guid" >
<generator class="assigned" />
</id> \n
.foreach_item(Attributes)
.if(%dataType% == "string")
<property name="%Code%" type="String">
<column name="%Code%" />
</property> \n
.endif
.if(%dataType% == "int")
<property name="%Code%" type="Int32">
<column name="%Code%" />
</property> \n
.endif
.next
</class>
</hibernate-mapping>

具体里面的配置我还没写好,需要再查帮助。
3.配置输出NHibernate的xml文件
在 C# 2::Profile\BasePackage\Templates\Visual Studio ,将模板修改为:


.// Declare classifiers of the package
.foreach_item(Classifiers,,,%IsShortcut%==false)
.if (%IsSelected%) and (%isInner% == false)
<File
RelPath = "%sourceFilePath%"
SubType = "Code"
BuildAction = "Compile"
/>
<File
RelPath = "%sourceFilePath%\\%topContainerCode%.hbm.xml"
BuildAction = "EmbeddedResource"
/>
.endif(\n)
.next
.// Declare classifiers of the subpackages
.foreach_item(Packages,,,%IsShortcut%==false)
.if (%isAssembly% == false)
%ProjectSourceFiles%
.endif
.next

NHibernate的xml配置完成。最后,一起导出实体和NHibernate的.xml文件
菜单位置:Language → Generate C# 2 Code


生成的两个文件:Customers.cs 和 Customers.hbm.xml
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
// --------------------------------------------------------------------------------------------------------------------// <copyright file="Customers.cs" company="">// XXXX系统// </copyright>// <summary>// 账户信息// </summary>// --------------------------------------------------------------------------------------------------------------------namespace XXXX.Domain.Model{ using System; /// <summary> /// 账户信息 /// </summary> public class Customers { /// <summary> /// 账户ID /// </summary> public string customerId { get; set; } /// <summary> /// 账户名称 /// </summary> public string customerName { get; set; } /// <summary> /// 性别 /// </summary> public bool gender { get; set; } /// <summary> /// 地址 /// </summary> public string address { get; set; } /// <summary> /// 电话号码 /// </summary> public string phoneNumber { get; set; } }} |

<?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="" namespace="">
<class name="Customers.cs" table="Customers.cs" lazy="true" >
<id name="ID" column="ID" type="Guid" >
<generator class="assigned" />
</id>
<property name="CustomerId" type="String">
<column name="CustomerId" />
</property>
<property name="CustomerName" type="String">
<column name="CustomerName" />
</property>
<property name="Address" type="String">
<column name="Address" />
</property>
<property name="PhoneNumber" type="String">
<column name="PhoneNumber" />
</property>
</class>
</hibernate-mapping>

今天的学习只是找到了实现方法,想要把模板做好,还要再看看帮助。
不怎么会写博客,望前辈批评指正。
另外对使用CodeSmith导出实体类和NHibernate做了研究。模板下载:NHibernate模板 和 我自己写的模板
Power Designer导出实体类和NHibernate xml文件的更多相关文章
- xml文件生成方式一(字符串拼接,将多实体类对象写入xml文件)
1.xml文件生成,拼接字符串使用StringBuffer或StringBuilder 2.拼接好后写入文件即可,将多个实体类写入xml文件 3.这种方式比较简单,但是操作也比较麻烦 4.下面是我的代 ...
- MyBatis从入门到精通:第一章实体类与Mapper.xml文件
实体类: package tk.mybatis.simple.model; public class Country { public Long getId() { return id; } publ ...
- Java工具类_表结构自动生成对应的实体类、Mapper.xml文件、Dao类
import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWrit ...
- powerdesigner 使用技巧 建模工具 导出sql 导出实体类 导出word
显示comment列 Table Properties(表属性)=>Columns(列)=>Customize Columns and Filter(自定义列过滤) 勾上 comment ...
- MyBatis Spring整合配置映射接口类与映射xml文件
本文转自http://blog.csdn.net/zht666/article/details/38706083 Spring整合MyBatis使用到了mybatis-spring,在配置mybati ...
- java 编程基础:注解(Annotation Processing Tool)注解处理器 利用注解解读类属性生成XML文件
APT的介绍: APT(Annotation Processing Tool)是一种注解处理工具,它对源代码文件进行检测,并找出源文件所包含的注解信息,然后针对注解信息进行额外的处理. 使用APT工具 ...
- C#实体类序列化为XML
这两天,应要求做一个C/S的小程序,考虑到程序简洁小巧,存数据的方式不使用数据库,而是直接存入XML文档中保存.为了把复杂实体类里面的属性存入XML,我们可以使用C#有的反射机制,做一个简单的通用工具 ...
- Mybatis generator自动生成代码包括实体,dao,xml文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration ...
- mybatis-generator数据库注释实体类生成以及generatorConfig文件配置
项目里新建表时model,mapper以及mapper.xml基本都是用Mybatis Generator(以下简称为MBG)自动生成的,但是MBG自动生成的model的注释实在有点非人类,至少中国人 ...
随机推荐
- 《得知opencv》注意事项——矩阵和图像处理——cvOr,cvOrS,cvrReduce,cvRepeat,cvScale,cvSet and cvSetZero
矩阵和图像的操作 (1)cvOr函数 其结构 void cvOr(//两个矩阵相应元素做或执行 const CvArr* src1,//矩阵1 const CvArr* src2,//矩阵2 CvAr ...
- C#操作Xml:XSLT语法 在.net中使用XSLT转换xml文档示例
XSL即可扩展的样式表文件. 可以格式化xml的显示,也可以将xml转换成需要的另一种格式. 学习XSL必须熟悉XPath.XSL和XPath一样简单强大,容易学习. 1. XSL既然可以格式化xml ...
- PHP移动互联网的发展票据(6)——MySQL召回数据库基础架构[1]
原文地址 :http://www.php100.com/html/php/api/2014/0326/6707.html 一.数据类型 1.整型 数据类型 存储空间 说明 取值范围 TINYINT 1 ...
- Utility Classes Are Evil
原文地址:http://alphawang.com/blog/2014/09/utility-classes-are-evil/ This post is a summary of this arti ...
- IOS、java支持DES加密
转载请注明博客地址:http://blog.csdn.net/mengxiangyue/article/details/40015727 近期在考虑数据加密方面的需求,所以对数据加密简单的看了一下,当 ...
- Swift入门教程:基本语法(四)
可选类型 可选类型的使用场合 当一个值可能存在,可能不存在的时候,就用可选类型 比如查找字符k在某个字符串中的位置 如果字符串是"jake",说明k的位置存在,是2 如果字符串是& ...
- jQuery随记汇总
1.jQuery操作行内样式style中的某一项的值:>> <div id="test" style=" display:none;"> ...
- 砸金蛋:jQuery+PHP实现的砸金蛋中奖程序
原文 砸金蛋:jQuery+PHP实现的砸金蛋中奖程序 砸金蛋被广泛应用于庆典活动.商家促销.电视娱乐等场合,它的趣味.悬念能迅速活跃现场气氛.同样,我们也可以将砸金蛋应用到WEB网站上,用于开展线上 ...
- Jquery AJAX POST与GET之间的区别
1:GET访问 浏览器 认为 是等幂的就是 一个相同的URL 只有一个结果[相同是指 整个URL字符串完全匹配]所以 第二次访问的时候 如果 URL字符串没变化 浏览器是 直接拿出了第一次访问的结果 ...
- PHP通过OpenSSL生成证书、密钥并且加密解密数据,以及公钥,私钥和数字签名的理解
一.公钥加密假设一下,我找了两个数字,一个是1,一个是2.我喜欢2这个数字,就保留起来,不告诉你们(私钥),然后我告诉大家,1是我的公钥. 我有一个文件,不能让别人看,我就用1加密了.别人找到了这个文 ...