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的注释实在有点非人类,至少中国人 ...
随机推荐
- ABP日志管理
ABP日志管理 基于DDD的现代ASP.NET开发框架--ABP系列之8.ABP日志管理 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ABP ...
- crawler_大型舆情架构图
- linux_shell_获取日期相关
shell里直接调用系统变量 获取当天日期`date +%Y%m%d` 获取昨天日期`date -d yesterday +%Y%m%d` 获取前天日期`date -d -2day +%Y%m%d` ...
- js拾遗:appendChild 添加移动节点
原文:js拾遗:appendChild 添加移动节点 写js一年多了,一直以为自己很牛逼,开始写各种博文分享,昨天写了一篇<浅谈 IE下innerHTML导致的问题>在看了下面的评论,我才 ...
- AngularJS之使用服务封装
AngularJS之使用服务封装可复用代码 创建服务组件 在AngularJS中创建一个服务组件很简单,只需要定义一个具有$get方法的构造函数, 然后使用模块的provider方法进行登记: / ...
- sql server 查看表的行数
SELECT a.name , b.[rows]FROM dbo.sysobjects AS a LEFT JOIN sysindexes AS b ON a.id ...
- STL源代码分析——STL算法sort排序算法
前言 因为在前文的<STL算法剖析>中,源代码剖析许多,不方便学习,也不方便以后复习.这里把这些算法进行归类,对他们单独的源代码剖析进行解说.本文介绍的STL算法中的sort排序算法,SG ...
- ElasticSearch 与 Solr 的对比测试
ElasticSearch 与 Solr 的对比测试 本文从两个方面对ElasticSearch和Solr进行对比,从关系型数据库中的导入速度和模糊查询的速度. 单机对比 1. Solr 发布了4.0 ...
- The operator == is undefined for the argument type(s) int, null
package cn.edu.shu.web.test; public class TestInteger { public static void main(String[] args) { /** ...
- Android SDK Web SDK 接口测试总结
什么是SDK SDK就是一个程序,提供一些方法,调用这些方法,可以实现一些功能.如:调用银行提供的SDK,可以实现在线支付的功能. 目前主要接手的SDK有js SDK 和android SDK.JS ...