using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Web;
using System.Reflection;
using IBatisNet.Common;
using IBatisNet.Common.Pagination;
using IBatisNet.DataMapper;
using IBatisNet.DataMapper.Exceptions;
using IBatisNet.DataMapper.Configuration;
namespace IBatisNetLib
{
/// <summary>
/// 基于IBatisNet的数据访问基类
/// </summary>
public class BaseSqlMapDao
{
/// <summary>
/// IsqlMapper实例
/// </summary>
/// <returns></returns>
public static ISqlMapper sqlMap;
#region 构造ISqlMapper
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);
}
#endregion
/// <summary>
/// 是否存在
/// </summary>
/// <param name="tableName">表名</param>
/// <returns></returns>
protected bool ExecuteExists(string statementName, object parameterObject)
{
try
{
object obj = sqlMap.QueryForObject(statementName, parameterObject);
int cmdresult;
if ((Object.Equals(obj, null)) || (obj == null))
{
cmdresult = 0;
}
else
{
cmdresult = int.Parse(obj.ToString());
}
if (cmdresult == 0)
{
return false;
}
else
{
return true;
}
}
catch (Exception e)
{
throw (e);
}
}
/// <summary>
/// 执行添加
/// </summary>
/// <param name="statementName">操作名</param>
/// <param name="parameterObject">参数</param>
protected object ExecuteInsert(string statementName, object parameterObject)
{
try
{
return sqlMap.Insert(statementName, parameterObject);
}
catch (Exception e)
{
throw new DataMapperException("Error executing query '" + statementName + "' for insert. Cause: " + e.Message, e);
}
}
/// <summary>
/// 执行添加,返回自动增长列
/// </summary>
/// <param name="statementName">操作名</param>
/// <param name="parameterObject">参数</param>
/// <returns>返回自动增长列</returns>
protected int ExecuteInsertForInt(string statementName, object parameterObject)
{
try
{
object obj=sqlMap.Insert(statementName, parameterObject);
if (obj != null)
{
return Convert.ToInt32(obj);
}
else
{
return 0;
}
}
catch (Exception e)
{
throw new DataMapperException("Error executing query '" + statementName + "' for insert. Cause: " + e.Message, e);
}
}
/// <summary>
/// 执行修改
/// </summary>
/// <param name="statementName">操作名</param>
/// <param name="parameterObject">参数</param>
/// <returns>返回影响行数</returns>
protected int ExecuteUpdate(string statementName, object parameterObject)
{
try
{
return sqlMap.Update(statementName, parameterObject);
}
catch (Exception e)
{
throw new DataMapperException("Error executing query '" + statementName + "' for update. Cause: " + e.Message, e);
}
}
/// <summary>
/// 执行删除
/// </summary>
/// <param name="statementName">操作名</param>
/// <param name="parameterObject">参数</param>
/// <returns>返回影响行数</returns>
protected int ExecuteDelete(string statementName, object parameterObject)
{
try
{
return sqlMap.Delete(statementName, parameterObject);
}
catch (Exception e)
{
throw new DataMapperException("Error executing query '" + statementName + "' for delete. Cause: " + e.Message, e);
}
}
/// <summary>
/// 得到列表
/// </summary>
/// <typeparam name="T">实体类型</typeparam>
/// <param name="statementName">操作名称,对应xml中的Statement的id</param>
/// <param name="parameterObject">参数</param>
/// <returns></returns>
protected IList<T> ExecuteQueryForList<T>(string statementName, object parameterObject)
{
try
{
return sqlMap.QueryForList<T>(statementName, parameterObject);
}
catch (Exception e)
{
throw new DataMapperException("Error executing query '" + statementName + "' for list. Cause: " + e.Message, e);
}
}
/// <summary>
/// 得到指定数量的记录数
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="statementName"></param>
/// <param name="parameterObject">参数</param>
/// <param name="skipResults">跳过的记录数</param>
/// <param name="maxResults">最大返回的记录数</param>
/// <returns></returns>
protected IList<T> ExecuteQueryForList<T>(string statementName, object parameterObject, int skipResults, int maxResults)
{
try
{
return sqlMap.QueryForList<T>(statementName, parameterObject, skipResults, maxResults);
}
catch (Exception e)
{
throw new DataMapperException("Error executing query '" + statementName + "' for list. Cause: " + e.Message, e);
}
}
/// <summary>
/// 得到分页的列表
/// </summary>
/// <param name="statementName">操作名称</param>
/// <param name="parameterObject">参数</param>
/// <param name="pageSize">每页记录数</param>
/// <returns></returns>
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);
}
}
/// <summary>
/// 查询得到对象的一个实例
/// </summary>
/// <typeparam name="T">对象type</typeparam>
/// <param name="statementName">操作名</param>
/// <param name="parameterObject">参数</param>
/// <returns></returns>
protected T ExecuteQueryForObject<T>(string statementName, object parameterObject)
{
try
{
return sqlMap.QueryForObject<T>(statementName, parameterObject);
}
catch (Exception e)
{
throw new DataMapperException("Error executing query '" + statementName + "' for object. Cause: " + e.Message, e);
}
}
}
}
|