T4:使用 T4 消除程序和配置文件中重复的字符串信息

背景

我们经常在配置文件中配置各种:id、name,然后在程序中使用这些配置获取信息,这导致了字符串重复出现在系统的多个地方,非常不利于维护,本文介绍采用 T4 来消除这种重复。

T4 消除重复

配置文件

 1 <?xml version="1.0" encoding="utf-8" ?>

 2 

 3 <sqlMap namespace="Accounts" xmlns="http://ibatis.apache.org/mapping"

 4   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

 5 

 6   <alias>

 7     <typeAlias alias="Account" type="WHTR.Domain.Accounts.Account, WHTR.Domain" />

 8   </alias>

 9 

10   <statements>

11     <select id="Account.GetByCustomIdAndAccountType"  parameterClass="Hashtable"  resultMap="Account">

12       select

13       *

14       from

15       [Account]

16       where

17       (CustomerId = #customerId#) and (AccountType = #accountType#)

18     </select>

19 

20     <insert id="Account.Insert" parameterMap="Account">

21       <generate table="Account"/>

22       <selectKey resultClass="int" type="post" property="Id">

23         select @@IDENTITY as value

24       </selectKey>

25     </insert>

26 

27     <update id="Account.Update" parameterClass="Account">

28       update

29       [Account]

30       set

31       CustomerId           =        #CustomerId#,

32       Amount               =        #Amount#,

33       AccountType          =        #AccountType#,

34       FrozenAmount         =        #FrozenAmount#,

35       InitialAmount        =        #InitialAmount#,

36       Creator              =        #Creator#,

37       CreateDate           =        #CreateDate#,

38       Editor               =        #Editor#,

39       EditDate             =        #EditDate#,

40       IsDel                =        #IsDel#,

41       Version              =        Version + 1

42       where

43       (Version = #Version#) and (Id = #Id#)

44     </update>

45   </statements>

46   

47 </sqlMap>

原始代码

1         public void Insert(Account account)

2         {

3             Mapper

4                 .Instance()

5                 .Insert("Account.Insert", account);

6         }

重构后的代码

1         public void Insert(Account account)

2         {

3             Mapper

4                 .Instance()

5                 .Insert(Constants.Account.Insert, account);

6         }

7     }

模版

如何写 T4 这里就不介绍了。

T4:使用 T4 消除程序和配置文件中重复的字符串信息

 

你可能感兴趣的:(配置文件)