一、开发环境

操作系统:Win7

编译器:VS2010

二、涉及程序集

Spring.Core.dll

Spring.Data.dll

Common.Logging.dll

三、开发过程

1.项目结构

2.IAccountDao.cs

namespace Dao
{
public interface IAccountDao
{
void Create(string name, string userName); void Delete(string userName);
}
}

3.IUserDao.cs

namespace Dao
{
public interface IUserDao
{
void Create(string name, int age); void Delete(string name); DataSet Get(string name);
}
}

4.AccountDao.cs

namespace Dao
{
public class AccountDao : AdoDaoSupport, IAccountDao
{
public void Create(string name, string userName)
{
AdoTemplate.ExecuteNonQuery(CommandType.Text,
String.Format("INSERT INTO T_Account (UserName, AccountName) VALUES ('{0}', '{1}')", userName, name));
} public void Delete(string userName)
{
AdoTemplate.ExecuteNonQuery(CommandType.Text,
String.Format("DELETE FROM T_Account WHERE UserName = '{0}'", userName));
}
}
}

5.UserDao.cs

namespace Dao
{
public class UserDao : AdoDaoSupport, IUserDao
{
public void Create(string name, int age)
{
AdoTemplate.ExecuteNonQuery(CommandType.Text,
string.Format("INSERT INTO T_User (UserName, UserAge) VALUES ('{0}', {1})", name, age));
} public void Delete(string name)
{
AdoTemplate.ExecuteNonQuery(CommandType.Text,
string.Format("DELETE FROM T_User WHERE UserName = '{0}'", name));
} public DataSet Get(string name)
{
return AdoTemplate.DataSetCreate(CommandType.Text,
string.Format("SELECT * FROM T_User WHERE UserName = '{0}'", name));
}
}
}

6.IUserService.cs

namespace Service
{
public interface IUserService
{
void SaveData(string name, int age, string accountName); void DeleteData(string name); DataSet Get(string name);
}
}

7.UserService.cs

namespace Service
{
public class UserService : IUserService
{
public IUserDao UserDao { get; set; } public IAccountDao AccountDao { get; set; } [Transaction]
public void SaveData(string name, int age, string accountName)
{
UserDao.Create(name, age);
AccountDao.Create(accountName, name);
} [Transaction]
public void DeleteData(string name)
{
UserDao.Delete(name);
throw new Exception("测试数据是否回滚");
AccountDao.Delete(name);
} [Transaction(ReadOnly = true)]
public DataSet Get(string name)
{
return UserDao.Get(name);
}
}
}

8.App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration> <configSections>
<sectionGroup name="spring">
<section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/>
<section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core"/>
<section name="parsers" type="Spring.Context.Support.NamespaceParsersSectionHandler, Spring.Core"/>
</sectionGroup>
</configSections> <spring>
<parsers>
<parser type="Spring.Data.Config.DatabaseNamespaceParser, Spring.Data"/>
<parser type="Spring.Transaction.Config.TxNamespaceParser, Spring.Data"/>
</parsers> <context>
<!--<resource uri="assembly://Dao/Dao/Dao.xml"/>-->
<resource uri="config://spring/objects"></resource>
</context> <objects xmlns="http://www.springframework.net"
xmlns:db="http://www.springframework.net/database"
xmlns:tx="http://www.springframework.net/tx"> <db:provider id="DbProvider"
provider="SqlServer-1.1"
connectionString="Server=(local);Database=CIS;Uid=sa;Pwd=woaini;Trusted_Connection=False"/> <object id="userDao" type="Dao.UserDao, Dao">
<property name="AdoTemplate" ref="adoTemplate"/>
</object> <object id="accountDao" type="Dao.AccountDao, Dao">
<property name="AdoTemplate" ref="adoTemplate"/>
</object> <object id="userService" type="Service.UserService, Service">
<property name="UserDao" ref="userDao"/>
<property name="AccountDao" ref="accountDao"/>
</object> <object id="adoTemplate" type="Spring.Data.Core.AdoTemplate, Spring.Data">
<property name="DbProvider" ref="DbProvider"/>
<property name="DataReaderWrapperType" value="Spring.Data.Support.NullMappingDataReader, Spring.Data"/>
</object> <!--事务管理器-->
<object id="transactionManager"
type="Spring.Data.Core.AdoPlatformTransactionManager, Spring.Data">
<property name="DbProvider" ref="DbProvider"/>
</object> <!--事务切面-->
<tx:attribute-driven/> </objects>
</spring> </configuration>

9.控制台文件

namespace SpringNetTrans
{
class Program
{
static void Main(string[] args)
{
AdoTransaction();
Console.ReadKey();
} public static void AdoTransaction()
{
IApplicationContext ctx = ContextRegistry.GetContext();
IUserService service = (IUserService)ctx.GetObject("userService");
service.SaveData("Kimisme", 27, "1233456");
} public static void AdoDeleteTransaction()
{
IApplicationContext ctx = ContextRegistry.GetContext();
IUserService service = (IUserService)ctx.GetObject("userService");
service.DeleteData("Kimisme");
}
}
}

最新文章

  1. tomcat启动的了,但是加载项目失败
  2. simple mail example for smtp debug
  3. Nodejs基础:路径处理模块path总结
  4. JavaScript中的继承模式总结
  5. poj 2230 Watchcow(欧拉回路)
  6. MVC 中 使用TagBuilder扩展HtmlHelper
  7. 第一个felx项目的创建
  8. Redis与Memcached对比
  9. cocos2dx 3.2中的物理引擎初探(一)
  10. C# 解析json Newtonsoft.Json
  11. C#中函数的功能和类型
  12. JVM类加载机制以及类缓存问题的处理
  13. 20164305徐广皓 - Exp1 PC平台逆向破解(5)M
  14. UOJ129 NOI2015 寿司晚宴 数论、状压DP
  15. 使用Jmeter连接数据库检查数据库记录的方法
  16. 【SDOI2017】天才黑客
  17. 【转】Requests 官方中文文档 - 快速上手
  18. html页面使用前端框架布局时,弹出子页面等情况若出现布局混乱,可能是回发导致
  19. (5)MySQL的查询:模糊查询(通配符查询like)、限制符查询(limit)、排序查询(order by)、分组查询(group by)、(子查询)
  20. 【转】MySQL安全配置介绍

热门文章

  1. hdu4778(状态压缩dp)
  2. Ubuntu 16.04安装unrar解压RAR文件
  3. windows 7 文件加密设置
  4. netty4与protocol buffer结合简易教程
  5. Windows命令实现匿名邮件发送
  6. Java编程中经常用到代码
  7. Python执行系统命令并获得输出的几种方法
  8. Sqoop异常解决ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: No columns to generate for ClassWriter问题
  9. JPG文件格式
  10. Android源码的下载、编译与导入到Android Studio【转】