四. IBatisNet组件使用
DomSqlMapBuilder,其作用是根据配置文件创建SqlMap实例。可以通过这个组件从Stream, Uri, FileInfo, or XmlDocument instance 来读取sqlMap.config文件。
2. SqlMap
SqlMapper是IBatisnet的核心组件,提供数据库操作的基础平台。所有的操作均通过SqlMapper实例完成。SqlMapper可通过DomSqlMapBuilder创建。
这个例子中我们可以将所有的配置文件按照嵌入资源文件方式存放,从程序集去加载sqlmap.config文件。也可以直接以文件方式加载sqlmap.config。
/// <summary> /// IsqlMapper实例 /// </summary> /// <returns></returns> public static ISqlMapper sqlMap ; private string fileName = "sqlMap.Config"; public BaseSqlMapDao() { //从程序集资源中加载 //Assembly assembly = Assembly.Load("IBatisNetDemo"); //Stream stream = assembly.GetManifestResourceStream("IBatisNetDemo.sqlmap.config"); //DomSqlMapBuilder builder = new DomSqlMapBuilder(); //sqlMap = builder.Configure(stream);
//从文件加载创建实例 DomSqlMapBuilder builder = new DomSqlMapBuilder(); sqlMap = builder.Configure(fileName); } |
SqlMap是线程安全的,也就是说,在一个应用中,可以共享一个SqlMap实例。
SqlMap提供了众多数据操作方法,下面是一些常用方法的示例,具体说明文档参见 ibatis net doc,或者ibatisnet的官方开发手册。
3. SqlMap基本操作示例
例1:数据写入操作(insert、update、delete)
SqlMap.BeginTransaction(); Person person = new Person(); Person.FirstName = “li”; Person.LastName = “tianping”; int Id = (int) SqlMap.Insert("InsertPerson", person); SqlMap.CommitTransaction(); |
Int Id = 1; Person person = SqlMap.QueryForObject<Person>("", Id); return person; |
IList<Person> list = null; list = SqlMap.QueryForList<Person>("SelectAllPerson", null); return list; |
IList<Person> list = null; list = SqlMap.QueryForList<Person>("SelectAllPerson", null, 0, 40); return list; |
public void RowHandler(object obj, IList list) { Product product = (Product) object; product.Quantity = 10000; } SqlMapper.RowDelegate handler = new SqlMapper.RowDelegate(this.RowHandler); IList list = sqlMap.QueryWithRowDelegate("getProductList", null, handler); |
下面特别说明一下ibatisnet对Stored Procedures的处理,iBatis数据映射把存储过程当成另外一种声明元素。示例演示了一个基于存储过程的简单数据映射。
<!-- Microsot SQL Server --> <procedure id="SwapEmailAddresses" parameterMap="swap-params"> ps_swap_email_address </procedure> ... <parameterMap id="swap-params"> <parameter property="email1" column="First_Email" /> <parameter property="email2" column="Second_Email" /> </parameterMap>
<!-- Oracle with MS OracleClient provider --> <procedure id="InsertCategory" parameterMap="insert-params"> prc_InsertCategory </procedure> ...
|