系统业务层重构开发笔记(学习别人补充自己)
2009-10-27 11:37 闫妍 阅读(202) 评论(0) 编辑 收藏 举报数据存储层:Oracle
业务层:.Net
UI:Flex
术语:Oracle,.Net,IBatis,Castle,Flex,CodeSmith
建立Oracle数据表
生成代码
用CodeSmith 建立Oracle连接
打开定义好的MapsConfig.cst模板 生成IBatis 使用的 SQLMap SQL定义的XML文件
把另存为的XML文件,重新命名复制到UI项目的Maps目录下
再选择下面模板文件生成,方式一样都是选择相同的表
ServiceTemplate.cst
DaoTemplate.cst
IDaoTemplate.cst
DoMainTemplate.cst
把Dao和IDao文件复制到的相应项目新建目录下
把Service文件复制到相应的项目新建目录下
把DoMainTemplate.cst复制到Po项目中
将生成好的文件也改名字,与原有系统命名一致,开始项目调试,此时编译会出错。
开始调试
1.SVN在更新项目的时候如果把csproj项目文件冲突之后,会造成项目加载不起来
可以右键编辑删除这个项目的csproj文件中冲突的部分,再重新加载项目即可成功。
2.SVN在提交的时候遇到冲突的问题
可以右键红色的冲突项目,选择回滚或者更新至最新版本尝试
提交和更新完版本之后,开始调试项目中刚刚加入的文件
打开Po项目中的Suppliers.cs文件
更新命名空间
namespace Ebao51Net.Po.SuppliersModule
更新生成中错误的地方
/// <summary> /// 0 未启用 1 已启用 2 暂停中 /// </summary> private Int32 status; /// <summary> /// 0 未启用 1 已启用 2 暂停中 /// </summary> public Int32 Status { get{return status;} set{status = value;} }
/// <summary> /// 0 未启用 /// 1 已启用 /// 2 暂停中 /// </summary> private Int32 status; /// <summary> /// /// </summary> public Int32 Status { get{return status;} set{status = value;} }
打开Persistence项目ISuppliersDao.cs与其他项目对比
添加Po的项目引用
using Ebao51Net.Po.SuppliersModule;
替换CodeSmith根据数据表名生成的实体及方法名称,使用当前文件替换成类名即可
修改SuppliersDao.cs文件
更改命名空间和添加引用空间名
using Ebao51Net.Po.SuppliersModule; using Ebao51Net.Persistence.DataAccess; namespace Ebao51Net.Persistence.SuppliersModule
替换成员名
打开Service项目的SuppliersManager.cs文件
删除错误的引用
using Payment.Persistence.PayMentModule; using Payment.Po.PayMentModule;
using Ebao51Net.Po.SuppliersModule; using Ebao51Net.Persistence.SuppliersModule; namespace Ebao51Net.Services.SuppliersModule
替换
将SuppliersDAO 修改成SuppliersDao 有三处要修改
编译一下整个解决方案,发现有几处错误,不是与刚才的过程有关的,是由于之前其他同事修改造成的
签入一下代码
配置部分
配置 SqlMap.config 添加SQLMap的XML定义,添加:
<!--供应商--> <sqlMap resource="${root}Suppliers.xml" />
配置 Daos.config 添加定义,
<!--供应商--> <component id="SuppliersDao" service="Ebao51Net.Persistence.SuppliersModule.ISuppliersDao, Ebao51Net.Persistence" type="Ebao51Net.Persistence.SuppliersModule.SuppliersDao, Ebao51Net.Persistence" > <parameters> <commonMapperFactory>${commonMapperFactory}</commonMapperFactory> </parameters> </component>
SuppliersDao是在以下用的的名字
namespace Ebao51Net.Services.SuppliersModule { public class SuppliersManager : ServiceBase { private ISuppliersDao SuppliersDao; public SuppliersManager() { SuppliersDao = GetDao<ISuppliersDao>("SuppliersDao"); }
修改生成的XML需要修改Suppliers.xml 文件,在ServiceUI的Maps目录下
删掉
<typeAlias alias="SuppliersTab" type="IBCS.Domain.ContractUI.Maps.Suppliers, IBCS.Domain" />
换成
<typeAlias alias="Suppliers" type="Ebao51Net.Po.SuppliersModule.Suppliers, Ebao51Net.Po" />
替换
修改
<insert id="Suppliers.Insert" parameterClass="Suppliers"> INSERT INTO PD_SUPPLIERS_TAB (ID,INSURE_ID,CODE,NAME,SHORT_NAME,PROVINCE,CITY,AREA,STATUS,REMARK,CREATE_TIME,UPDATE_TIME,PHONE,LINKMAN,BANKNAME,BANKNUMBER,CLEARINGMODE,COOPERATEMODE) VALUES (#Id#,#InsureId#,#Code#,#Name#,#ShortName#,#Province#,#City#,#Area#,#Status#,#Remark#,#CreateTime#,#UpdateTime#,#Phone#,#Linkman#,#Bankname#,#Banknumber#,#Clearingmode#,#Cooperatemode#) <selectKey resultClass="int" type="pre" property="Id" > 修改这句为下图 --> SELECT SEQ_PD_SUPPLIER.NEXTVAL AS VALUE FROM DUAL </selectKey> </insert>
方法功能就是主键自增量
修改Properties.config文件,查看连接数据库字符串是否正确
<settings> <add key="provider" value="oracleClient2.0"/> <add key="connectionString" value="Data Source=11;Persist Security Info=True;User ID=11;Password=11;Unicode=True"/> <add key="root" value="Maps\" /> <add key="assembly" value="ebao51.ServiceUI"/> </settings>
使用测试
添加一条记录,看一下结果
using Ebao51Net.Services.SuppliersModule; using Ebao51Net.Po.SuppliersModule; namespace ServiceUI { public partial class EditSuppliers : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { SuppliersManager sm = new SuppliersManager(); Suppliers su=new Suppliers(); su.Name = "Name1"; sm.AddSuppliers(su); } } }