创建表 添加字段 表间关联
数据库操作相关
Entity写法
1. Entity标签 (等同一条sql语句,默认属性,共用表)
<entity name="project" table="Artisan_Project" orderBy="CreateTime" asc="false"> </entity>//
与sql语句 create table if not exists Artisan_Project (…字段声明) order by CreateTime desc 同义。//如果不存在Atisan 工程创建表并按创建时间降序排列。
系统默认会添加四个字段 ID,CreateTime,ModifiedTIme,Version,其余字段根据业务逻辑自行添加
<entity name="designtask" extends="project" conditions="IsDesignTask=1"></entity>
//符合条件字段值得记录创建表
这条语句声明designtask 实体类与 project 共用一张表(extends), project表中字段IsDesignTask值为1的记录为designtask, designtask中声明的字段名也会在project表中添加对应字段名的表列
2. Field标签(新增字段)
<entity name="localproject" table="Artisan_Localproject" orderBy="CreateTime"
asc="false">
<field name="ProjectName" title="项目名称" />
<field name="DesignAssignTime" type="datetime" />
</entity>
表明Artisan_Localproject表 中新增一列名为ProjectName,类型为String,新增一列名为DesignAssignTime,类型为yyyy-MM-dd HH:mm:ss 格式的日期加时间
Type属性默认为string, 其他可选属性为
date(yyyy-MM-dd 日期的格式)
clob(长文本)
id(uuid)
money(金额格式的浮点数)
number(数字格式,和size属性一起用、如type=”number” size=”(10,2)”表示总长度为10,精确到小数点后2位)
integer(整数)、boolean(布尔类型)
3. Relation标签
<entity name="localproject" table="Artisan_Localproject" orderBy="CreateTime"
asc="false">
<relation name="comp1" table="Artisan_Company" local="CompanyID" />
<field name="CompanyName" title="客户" relation="comp1" column="Name" />
</entity>
表Artisan_localproject中存在外键CompanyID与Artisan_Company中的ID一对一关联,
根据以上关联,Artisan_localproject中CompanyName字段与Artisan_Company中的Name相等
4. Item标签(表间关联)
<entity name="localproject" table="Artisan_Localproject" orderBy="CreateTime"
asc="false">
<item name="morepersons1" table="Artisan_Project_More_Persons"
local="ProjectID">
<field name="PersonName" />
</item>
</entity>
表Artisan_Localproject与表Artisan_Project_More_Persons存在一对多关联,
Artisan_Project_More_Persons中外键为ProjectID与Artisan_Localproject中的ID关联
Artisan架构中数据库操作相关API
1. 加载表中指定ID的数据
BeanData designRequestData = DaoAction.load("projectrequest", dataset.getString("RequestID"));
通过DaoAction.load()方法加载某表中指定ID的一条数据,
实例代码为在projectrequest对应表中查找ID与第二个参数相等的数据
5. 查询表中符合条件的一条或多条数据
RowDatas<RowData> summarys = DaoAction.query("summary", Cnds.eq("ProjectID", data.getIdValue()));
通过DaoAction.query()方法去指定表中查询符合条件的数据,第一个参数为entity中的name属性,第二个参数为Cnds,可以调用Cnds类中的相关方法获取查询条件
实例代码与sql select * from Artisan_Summarys where ProjectID = ? 意义相同
6. 保存数据到数据库中
调用DaoAction.save()方法将数据保存到数据库中
7. 在表中新增一条数据
BeanData summary=DaoAction.create("summary");
summary.set("ProjectID", data.getIdValue());
summary.set("ExhName", data.get("Name"));
summary.set("Exh_Year", data.get("Exh_Year"));
summary.set("ReceivableAmount", 0);
summary.set("PayableAmount", 0);
summary.set("Net", 0);
DaoAction.save(summary);
调用DaoAction.create()方法新增数据,然后通过set方法设置各个字段的值,最后调用DaoAction.save()方法将数据保存到数据库中
界面相关代码
业务逻辑相关界面代码参见自定义Composer中,要查看数据绑定,事件定义等架构中的过程,自行查看架包中的源代码