using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
using System.IO;
using IBatisNet.Common;
using IBatisNet.Common.Pagination;
using IBatisNet.DataMapper;
using IBatisNet.DataMapper.Exceptions;
using IBatisNet.DataMapper.Configuration;
namespace Maticsoft.DBUtility
{
///
/// 基于IBatisNet的数据访问基类
///
public class BaseSqlMapDao
{
private ISqlMapper sqlMap;
public BaseSqlMapDao()
{
//DomSqlMapBuilder builder = new DomSqlMapBuilder(true);
//sqlMap = builder.Configure();
Assembly assembly = Assembly.Load("IBatisNetDemo");
Stream stream = assembly.GetManifestResourceStream("IBatisNetDemo.sqlmap.config");
DomSqlMapBuilder builder = new DomSqlMapBuilder();
sqlMap = builder.Configure(stream);
}
/////
///// IsqlMapper实例
/////
/////
//public static ISqlMapper sqlMap = (ContainerAccessorUtil.GetContainer())["sqlServerSqlMap"] as ISqlMapper;
//public SqlMapper SqlMap
//{
// get
// {
// Assembly assembly = Assembly.Load("IBatisNetDemo");
// Stream stream = assembly.GetManifestResourceStream("IBatisNetDemo.sqlmap.config");
// DomSqlMapBuilder builder = new DomSqlMapBuilder();
// builder.
// SqlMapper sqlMap = builder.Configure(stream);
// }
//}
///
/// 得到列表
///
/// 实体类型
/// 操作名称,对应xml中的Statement的id
/// 参数
///
protected IList ExecuteQueryForList(string statementName, object parameterObject)
{
try
{
return sqlMap.QueryForList(statementName, parameterObject);
}
catch (Exception e)
{
throw new DataMapperException("Error executing query '" + statementName + "' for list. Cause: " + e.Message, e);
}
}
///
/// 得到指定数量的记录数
///
///
///
/// 参数
/// 跳过的记录数
/// 最大返回的记录数
///
protected IList ExecuteQueryForList(string statementName, object parameterObject, int skipResults, int maxResults)
{
try
{
return sqlMap.QueryForList(statementName, parameterObject, skipResults, maxResults);
}
catch (Exception e)
{
throw new DataMapperException("Error executing query '" + statementName + "' for list. Cause: " + e.Message, e);
}
}
///
/// 得到分页的列表
///
/// 操作名称
/// 参数
/// 每页记录数
///
protected IPaginatedList ExecuteQueryForPaginatedList(string statementName, object parameterObject, int pageSize)
{
try
{
return sqlMap.QueryForPaginatedList(statementName, parameterObject, pageSize);
}
catch (Exception e)
{
throw new DataMapperException("Error executing query '" + statementName + "' for paginated list. Cause: " + e.Message, e);
}
}
///
/// 查询得到对象的一个实例
///
/// 对象type
/// 操作名
/// 参数
///
protected T ExecuteQueryForObject(string statementName, object parameterObject)
{
try
{
return sqlMap.QueryForObject(statementName, parameterObject);
}
catch (Exception e)
{
throw new DataMapperException("Error executing query '" + statementName + "' for object. Cause: " + e.Message, e);
}
}
///
/// 执行添加
///
/// 操作名
/// 参数
protected void ExecuteInsert(string statementName, object parameterObject)
{
try
{
sqlMap.Insert(statementName, parameterObject);
}
catch (Exception e)
{
throw new DataMapperException("Error executing query '" + statementName + "' for insert. Cause: " + e.Message, e);
}
}
///
/// 执行修改
///
/// 操作名
/// 参数
protected void ExecuteUpdate(string statementName, object parameterObject)
{
try
{
sqlMap.Update(statementName, parameterObject);
}
catch (Exception e)
{
throw new DataMapperException("Error executing query '" + statementName + "' for update. Cause: " + e.Message, e);
}
}
///
/// 执行删除
///
/// 操作名
/// 参数
protected void ExecuteDelete(string statementName, object parameterObject)
{
try
{
sqlMap.Delete(statementName, parameterObject);
}
catch (Exception e)
{
throw new DataMapperException("Error executing query '" + statementName + "' for delete. Cause: " + e.Message, e);
}
}
/////
///// 得到流水号
/////
///// 表名
/////
//public int GetId(string tableName)
//{
// try
// {
// Stream stream = sqlMap.QueryForObject("GetStreamId", tableName) as Stream;
// return stream.IMaxID;
// }
// catch (Exception e)
// {
// throw (e);
// }
//}
}
/////
///// Stream
/////
//public class Stream
//{
// public Stream()
// {
// }
// private string ctablename;
// public string CTableName
// {
// get { return ctablename; }
// set { ctablename = value; }
// }
// private int imaxid;
// public int IMaxID
// {
// get { return imaxid; }
// set { imaxid = value; }
// }
//}
//public class ContainerAccessorUtil
//{
// private ContainerAccessorUtil()
// {
// }
// ///
// /// Obtain the Cuyahoga container.
// ///
// ///
// public static IWindsorContainer GetContainer()
// {
// IContainerAccessor containerAccessor = HttpContext.Current.ApplicationInstance as IContainerAccessor;
// if (containerAccessor == null)
// {
// throw new Exception("You must extend the HttpApplication in your web project " +
// "and implement the IContainerAccessor to properly expose your container instance");
// }
// IWindsorContainer container = containerAccessor.Container as IWindsorContainer;
// if (container == null)
// {
// throw new Exception("The container seems to be unavailable in " +
// "your HttpApplication subclass");
// }
// return container;
// }
//}
}