系统业务层重构开发笔记(学习别人补充自己)

数据存储层:Oracle

业务层:.Net

UI:Flex

术语:Oracle,.Net,IBatis,Castle,Flex,CodeSmith

建立Oracle数据表

image

生成代码

用CodeSmith 建立Oracle连接 

image

打开定义好的MapsConfig.cst模板 生成IBatis 使用的 SQLMap  SQL定义的XML文件

image

把另存为的XML文件,重新命名复制到UI项目的Maps目录下

image

再选择下面模板文件生成,方式一样都是选择相同的表

ServiceTemplate.cst

DaoTemplate.cst

IDaoTemplate.cst

DoMainTemplate.cst

2009-10-27_131831

把Dao和IDao文件复制到的相应项目新建目录下

image

把Service文件复制到相应的项目新建目录下

image

把DoMainTemplate.cst复制到Po项目中

将生成好的文件也改名字,与原有系统命名一致,开始项目调试,此时编译会出错。

image

开始调试

1.SVN在更新项目的时候如果把csproj项目文件冲突之后,会造成项目加载不起来

可以右键编辑删除这个项目的csproj文件中冲突的部分,再重新加载项目即可成功。

2.SVN在提交的时候遇到冲突的问题

可以右键红色的冲突项目,选择回滚或者更新至最新版本尝试

image

提交和更新完版本之后,开始调试项目中刚刚加入的文件

打开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与其他项目对比

image

添加Po的项目引用

using Ebao51Net.Po.SuppliersModule;

替换CodeSmith根据数据表名生成的实体及方法名称,使用当前文件替换成类名即可

image

修改SuppliersDao.cs文件

更改命名空间和添加引用空间名

using Ebao51Net.Po.SuppliersModule;
using Ebao51Net.Persistence.DataAccess;

namespace Ebao51Net.Persistence.SuppliersModule

替换成员名

image

打开Service项目的SuppliersManager.cs文件

删除错误的引用

using Payment.Persistence.PayMentModule;
using Payment.Po.PayMentModule;

修改命名空间,添加代码引用

using Ebao51Net.Po.SuppliersModule;
using Ebao51Net.Persistence.SuppliersModule;

namespace Ebao51Net.Services.SuppliersModule

替换

image

将SuppliersDAO 修改成SuppliersDao 有三处要修改

编译一下整个解决方案,发现有几处错误,不是与刚才的过程有关的,是由于之前其他同事修改造成的

签入一下代码

配置部分

image

配置 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" />

替换

image

修改

<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>
image 
方法功能就是主键自增量
 

修改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);
        }
    }
}
原文地址:https://www.cnblogs.com/lexus/p/2348436.html