Unity + iBatis + Asp.net Mvc 系統搭建

以前用EntityFramework Code First作了一些小項目,非常方便;後來在一個 Java 項目中接觸了myBatis以後,深深的喜歡上了這種最直接最原始最靈活的數據庫操做,因此最終決定改造以前的項目,使用IBatis訪問數據庫;jquery

1、框架搭建web

1)新建一個Asp.net Mvc的應用,.Net使用4.5sql

2)使用 Nuget 安裝 Unity 3.5,由於比較熟悉 Unity;數據庫

3)使用 Nuget 安裝 Unity Bootstrapper for ASP.NET MVCbootstrap

4)使用 Nuget 安裝 Common Service Locatorapp

5)安裝 IBatisNet,版本有點老了,不過仍是能穩定工做,先用着吧;框架

前臺,jquery,bootstrap 等ide

2、配置函數

1)配置  IBatisspa

  a)web.config 中配置 log 信息

  b)provider.config,以及 sqlmap.config 文件,放到了 ~/App_Data下

2)配置 Unity

  a)採用配置文件進行配置:

  首先到解決方案下,找到 Packages/Unity.xx.xx.xx 下的 UnityConfiguration30.xsd,拷貝到VisualStudio 的 xml/schema目錄下,這樣編輯配置文件就有語法提示了;

  在 ~/App_Data目錄下,建立一個 unity.config 文件,內容以下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/>
  </configSections>
  <unity xmlns="http://schemas.microsoft.com/practices/2010/unity">

    <!-- assemblies 加入程序集 -->
    <assembly name="Mwms.Framework"/>
    <assembly name="Microsoft.Practices.Unity.Mvc"/>
    <assembly name="System.Web.Mvc"/>
    
    <!-- namespaces 加入命名空間,這樣就能夠直接使用其中的類型了 -->
    <namespace name="Mwms.Framework" />
    <namespace name="Mwms.Framework.Interfaces" />
    <namespace name="Mwms.Framework.Repository" />
      
    <namespace name="System.Web.Mvc"/>

  <!-- 配置一個生命週期管理器 --> <alias alias="PerRequestLifeTimeManager" type="Microsoft.Practices.Unity.PerRequestLifetimeManager, Microsoft.Practices.Unity.Mvc"/> <container> <!-- 包裝 IBatis 的 SQLMapper,自行實現, --> <register type="SqlMapperWrapper" mapTo="SqlMapperWrapper"> <lifetime type="PerRequestLifeTimeManager" /> <constructor> <param name="configPath" value="~/App_Data/SqlMap.config" /> </constructor> </register> <!--<register type="IMwLogger" mapTo="DebugLogger" /> <register type="IMwCacher" mapTo="DefaultNetCacher" />--> <!-- Repositories 配置一個泛型倉儲實現映射 --> <register type="IRepository`1" mapTo="IBatisRepository`1" />  
    <!-- 加入更多類型映射 --> </container> </unity> </configuration>

  b)載入UnityContainer 配置:

  修改 ~/App_Start 目錄下 UnityConfig.cs , 修改 RegisterTypes 方法,載入對應的配置文件;      

public static void RegisterTypes(IUnityContainer containerObject)
        {
            // NOTE: To load from web.config uncomment the line below. Make sure to add a Microsoft.Practices.Unity.Configuration to the using statements.
            // container.LoadConfiguration();

            // TODO: Register your types here
            // container.RegisterType<IProductRepository, ProductRepository>();

            var path = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "App_data", "unity.config");

            var fileMap = new ExeConfigurationFileMap { ExeConfigFilename = path };
            var configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
            var unitySection = (UnityConfigurationSection)configuration.GetSection("unity");

            containerObject.LoadConfiguration(unitySection);
        }

  c)SqlMap 配置文件中,載入相應的Mapper文件……

  其餘的,就是IBatis的標準開發流程,實體類,xml配置文件,倉儲類,服務接口,服務實現等;

作完以後,就能夠直接使用構造函數注入,在 Controller中使用代碼訪問數據庫了,直接用SQL也能夠完成不少邏輯

相關文章
相關標籤/搜索