public class DbSqlMapper
{
private static ILog m_objLog = LogManager.GetLogger(“GetSqlMapper”); //日志输出对象
/// <summary>
/// SqlMapper 集合
/// </summary>
public static Dictionary<string, ISqlMapper> dicMapper = new Dictionary<string, ISqlMapper>();
public static object lockGetMapper = new object();
/// <summary>
/// 根据路径返回一个SqlMapper,一个SqlMapper对应一个SqlMap.config配置文件
/// </summary>
/// <param name="_strResource">路径</param>
/// <returns>一个SqlMapper</returns>
public static ISqlMapper GetMapper(String _strResource)
{
//m_objLog.Info("GetMapper Start");
ISqlMapper _objMapper = null;
if (!dicMapper.ContainsKey(_strResource))
{
//lock (lockGetMapper)
{
if (dicMapper.ContainsKey(_strResource))
{
_objMapper = dicMapper[_strResource];
}
else
{
DomSqlMapBuilder _objDomBuilder = new DomSqlMapBuilder();//初始化一个DomSqlMapBuilder
_objMapper = _objDomBuilder.Configure(_strResource);//调用Configure方法并指定配置文件的名称,返回一个SqlMapper
dicMapper[_strResource] = _objMapper;
//dicMapper.Add(_strResource, _objMapper);
}
}
}
else
{
_objMapper = dicMapper[_strResource];
}
//m_objLog.Info("GetMapper End");
return _objMapper;
}
/// <summary>
/// 得到参数化后的SQL
/// </summary>
/// <param name="_strTag">语句ID</param>
/// <param name="_objParam">参数</param>
/// <param name="_objSqlMap">ISqlMapper类对象</param>
/// <returns>返回SQL</returns>
public static IDbCommand GetDbCommand(string _strTag, object _objParam, ISqlMapper _objSqlMap)
{
IStatement _objStatement = null;
IMappedStatement _objMapStatement = null;
IDalSession _objSession = null;
RequestScope _objRequest = null;
_objStatement = _objSqlMap.GetMappedStatement(_strTag).Statement;
_objMapStatement = _objSqlMap.GetMappedStatement(_strTag);
_objSession = new SqlMapSession(_objSqlMap);
_objRequest = _objStatement.Sql.GetRequestScope(_objMapStatement, _objParam, (ISqlMapSession)_objSession);
_objMapStatement.PreparedCommand.Create(_objRequest, (ISqlMapSession)_objSession, _objStatement, _objParam);
return _objRequest.IDbCommand;
}
}