zoukankan      html  css  js  c++  java
  • Git.Framework 框架随手记--准备工作

      前面已经提到过了本框架的由来,时至今日该框架已经和最初版本有了天壤之别。因为仍有部分代码是采用原有的框架,所以本框架也算不上原创,只是在原有的基础上不断的改进,所以希望了解此框架的人不要过多的指责。

      一. 配置数据库连接

        在该框架中自定义了一个配置文件Database.config, 这个配置文件的根节点为<databaseList></databaseList>, 其可以包含多个子节点用于配置数据库的配置连接,具体代码如下:

    <?xml version="1.0" encoding="utf-8" ?>
    <databaseList>
      <database name="JooShowGit">
        <connectionString>Server=127.0.0.1;database=JooShowGit;user id=sa;Password=000000</connectionString>
      </database>
    </databaseList>

        该配置文件可以包含多个<database></database>的节点,该配置文件可以通过反序列化的形式转化为一个集合对象,最终可以通过database的name熟悉来获取一个数据库的Connection对象. 但是这里得注意一下,如果配置了多个数据库的连接,只能配置一种类型的数据库,比如MSSQL,Oracle,MySQL,Sqlite 等,不能配置混合的数据库连接,这里是有待改进的部分。在原有的框架中 name="JooShowGit(自定义)" 只是一个唯一标识符,在系统中查找的时候更加方便,但是改进之后可以用于关联实体与数据库连接的关系。

      二. 如何加载配置文件

        配置好如上的的数据库连接之后,我们并不是自己去读取配置然后创建连接,我们需要在web.config 或者app.config文件中配置如下代码:

    <appSettings>
        <add key="DatabaseListFile" value="/Configs/Data/Database.config"/>
        <add key="DataCommandFile" value="/Configs/Data/DbCommandFiles.config"/>
    </appSettings>

        这段代码告诉我们从何处去加载配置文件,DatabaseListFile 指定了数据连接配置文件的地址,在应用程序启动之后会自动寻找这个地址加载该配置到缓存,内部实现是通过反序列化为对象集合,缓存的是对象数据。

      三. Command 配置文件

        我们都知道在.NET数据库连接操作的时候都有一个command对象,用于执行命令。在框架中所有的SQL语句都配置在配置文件中,之前文章也提到过,我是非常反感这种配置的,这里为了从基础部分讲到使用以及改造过程,这里还是先介绍一下其作用。

    <?xml version="1.0" encoding="utf-8" ?>
    <dataOperations>
    
      <!--User_Base所有字段的修改-->
      <dataCommand name="User.UpdateAllBase" database="JooShowGit" commandType="Text">
        <commandText>
          <![CDATA[
           UPDATE [User]
           SET [UserName] = @UserName
              ,[Email] = @Email
              ,[Password] = @Password
              ,[RegisterDate] = @RegisterDate
              ,[RegisterIp] = @RegisterIp
              ,[Status] = @Status
              ,[RegisterApplicationID] = @RegisterApplicationID
              ,[ActiveDate] = @ActiveDate
              ,[LastLoginDate] = @LastLoginDate
              ,[LastLoginApplicationID] = @LastLoginApplicationID
              ,[RegisterSource] = @RegisterSource
              ,[AuditStatus] = @AuditStatus
              ,[IsLogin] = @IsLogin
              ,[LoginCount] = @LoginCount
              ,[LastLoginIp] = @LastLoginIp
              ,[AuditUser] = @AuditUser
              ,[AuditDate] = @AuditDate
              ,[IsDeleted] = @IsDeleted
              ,[OLDApplicationID] = @OLDApplicationID
              ,[OLDID] = @OLDID
              ,[RowGuid] = @RowGuid
              ,[IMNum] = @IMNum
              ,[Phone] = @Phone
              ,[IsEmailValidate] = @IsEmailValidate
              ,[IsPhoneValidate] = @IsPhoneValidate
              ,[StepNum] = @StepNum
              ,[SaleCode]=@SaleCode
              ,[PasswordIM]=PasswordIM
              ,[ActiveIP]=@ActiveIP
              ,[CompanyType]=@CompanyType
                Where UserId=@UserId
            ]]>
        </commandText>
        <parameters>
          <param name="@UserId" dbType="Int32" direction="Input"/>
          <param name="@UserName" dbType="String" direction="Input"/>
          <param name="@Email" dbType="String" direction="Input"/>
          <param name="@Password" dbType="String" direction="Input"/>
          <param name="@RegisterDate" dbType="DateTime" direction="Input"/>
          <param name="@RegisterIp" dbType="String" direction="Input"/>
          <param name="@Status" dbType="Int32" direction="Input"/>
          <param name="@RegisterApplicationID" dbType="Int32" direction="Input"/>
          <param name="@ActiveDate" dbType="DateTime" direction="Input"/>
          <param name="@LastLoginDate" dbType="DateTime" direction="Input"/>
          <param name="@LastLoginApplicationID" dbType="Int32" direction="Input"/>
          <param name="@RegisterSource" dbType="Int32" direction="Input"/>
          <param name="@AuditStatus" dbType="Int32" direction="Input"/>
          <param name="@IsLogin" dbType="Int16" direction="Input"/>
          <param name="@LoginCount" dbType="Int32" direction="Input"/>
          <param name="@LastLoginIp" dbType="String" direction="Input"/>
          <param name="@AuditUser" dbType="String" direction="Input"/>
          <param name="@AuditDate" dbType="DateTime" direction="Input"/>
          <param name="@IsDeleted" dbType="Int16" direction="Input"/>
          <param name="@OLDApplicationID" dbType="Int32" direction="Input"/>
          <param name="@OLDID" dbType="Int32" direction="Input"/>
          <param name="@RowGuid" dbType="String" direction="Input"/>
          <param name="@IMNum" dbType="String" direction="Input"/>
          <param name="@Phone" dbType="String" direction="Input"/>
          <param name="@IsEmailValidate" dbType="Int32" direction="Input"/>
          <param name="@IsPhoneValidate" dbType="Int32" direction="Input"/>
          <param name="@StepNum" dbType="Int32" direction="Input"/>
          <param name="@SaleCode" dbType="String" direction="Input"/>
          <param name="@PasswordIM" dbType="String" direction="Input"/>
          <param name="@ActiveIP" dbType="String" direction="Input"/>
          <param name="@CompanyType" dbType="Int32" direction="Input"/>
        </parameters>
      </dataCommand>
    
    
    </dataOperations>
    Command配置文件

        从以上配置项的代码应该都应该明白,其实就是讲ADO.NET中的SQL语句以及参数配置到了这个配置文件中。每一个操作语句就要配置一个dataCommand节点,最终这个配置文件也是通过反序列化转化为List集合对象了。在最底层其实是将以上内容转化为了为了一个Command对象,在使用的时候只需要获取Command对象就可以直接操作数据了。

        name 节点属性在全局是唯一的,不能重复.

        database 指向Database.config配置文件中的name节点属性值,用于设置连接的数据库。

        commandType 用于指定执行的语句是SQL语句还是存储过程

        commandText 用于指定执行命令的语句

        parameters 指定占位符参数

      四. Command配置文件管理

        DbCommandFiles.config 文件使用于管理Command配置文件的,将Command配置文件添加到这个文件中,系统在启动的时候会默认将Command配置文件加载到缓存中,转化为Command对象。

    <?xml version="1.0" encoding="utf-8" ?>
    <dataCommandFiles>
      <file name="DbVnPageRequestCommand.config"/>
    </dataCommandFiles>  

        这个文件的根节点为dataCommandFiles,其子节点为执行的Command配置文件,如果在系统中编写了N多个Command配置文件,但是没有配置到这个配置文件中,系统是不会加载该配置文件的,所以需要特别的注意。    

      五. 日志管理配置

        在原有的系统中是没有日志记录的[带有日志功能但是全部屏蔽,使用的是windows日志],自己重新开发了一个日志模板,其功能和log4net比较相似,但是没有其强大,具体怎么使用log4net查看文章<Log4Net 全方位跟踪程序运行>.  

        日志使用必须要在app.config或者web.config配置文件中配置,具体配置项如下(如何实现后面再说):

    <appSettings>
        <add key="DatabaseListFile" value="/Configs/Data/Database.config"/>
        <add key="DataCommandFile" value="/Configs/Data/DbCommandFiles.config"/>
        <add key="CacheConfig" value="ConfigsCachecache.config"/>
        <add key="console" value="true"/>
        <add key="file" value="true"/>
        <add key="level" value="info"/>
        <add key="logpath" value="Log"/>
        <add key="logtype" value="Daily"/>
    </appSettings>

        console 项指定是否在控制台输出日志

        file 是否在log文件中记录日志

        level 用于记录日志的级别

        logpath 日志文件的记录路径

          logtype 日志文件的生产模式,1天,1周,1月,1年等

      六. 简单的测试案例

        这里简单的贴一段代码演示如何使用,后面具体详细描述:

    DataCommand command = DataCommandManager.GetDataCommand("User.UpdateAllBase");
    command.SetParameterValue(":username","222");
    command.SetParameterValue(":usergorup", "222");
    command.SetParameterValue(":userlevel", 2);
    int line = command.ExecuteNonQuery();

        从以上代码可以看出,这里的使用已经比ADO.NET简单了很多,而且Command对象都是直接使用clone方式得到的,在操作的过程中没有连接,关闭等操作,只需要指定相应的参数即可。

        由于今日时间有限,文章比较粗鄙,就此完结,具体改进过程后面会一一详述.

  • 相关阅读:
    在web项目中使用配置文件
    javaFx教程 scene builder 加载第三方jar包
    getResource的两种用法
    tomcat部署工具
    withMisfireHandlingInstruction
    quartz教程三
    quartz教程二
    LocalDateTime与DateTimeFormatter
    quartz demo
    在小程序中点击后跳转到另一个小程序
  • 原文地址:https://www.cnblogs.com/qingyuan/p/3653175.html
Copyright © 2011-2022 走看看