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; // } //} }