zoukankan      html  css  js  c++  java
  • 后台代码对iBatis配置文件中具体的sql语句的调用实现(被封装的增删改查)

    using IBatisNet.Common.Exceptions;
    
    using IBatisNet.DataAccess;
    using IBatisNet.DataAccess.DaoSessionHandlers;
    using IBatisNet.DataAccess.Interfaces;
    
    using IBatisNet.DataMapper;
    using IBatisNet.DataMapper.Commands;
    using IBatisNet.DataMapper.Configuration.ParameterMapping;
    using IBatisNet.DataMapper.MappedStatements;
    using IBatisNet.DataMapper.Scope;
    
    using System;
    using System.Collections.Generic;
    using System.Collections.Specialized;
    using System.Data;
    using System.Text;
    
    
    namespace YTO.WeiXin.Core
    {
        public class IbatisDaoExceptionHelper
        {
            // Methods
            public IbatisDaoExceptionHelper()
            {
    
            }
            public static string GetStatementDetail(ISqlMapper sqlMap, string statementName, object parameterObject)
            {
                try
                {
                    StringBuilder builder = new StringBuilder();
                    StringBuilder builder2 = new StringBuilder();
                    MappedStatement mappedStatement = (MappedStatement)sqlMap.MappedStatements[statementName];
                    ISqlMapSession localSession = sqlMap.LocalSession;
                    RequestScope request = mappedStatement.Statement.Sql.GetRequestScope(mappedStatement, parameterObject, localSession);
                    IDbCommand command = new DbCommandDecorator(localSession.CreateCommand(mappedStatement.Statement.CommandType), request);
                    string preparedSql = request.PreparedStatement.PreparedSql;
                    StringCollection dbParametersName = request.PreparedStatement.DbParametersName;
                    IDbDataParameter[] dbParameters = request.PreparedStatement.DbParameters;
                    int count = dbParametersName.Count;
                    for (int i = 0; i < count; i++)
                    {
                        IDbDataParameter parameter = dbParameters[i];
                        ParameterProperty mapping = request.ParameterMap.GetProperty(i);
                        builder.Append(parameter.ParameterName);
                        builder.Append("=[");
                        builder2.Append(parameter.ParameterName);
                        builder2.Append("=[");
                        builder.Append(mapping.PropertyName);
                        builder.Append(",");
                        IDbDataParameter dataParameter = command.CreateParameter();
                        request.ParameterMap.SetParameter(mapping, dataParameter, parameterObject);
                        if (dataParameter.Value == DBNull.Value)
                        {
                            builder.Append("null");
                            builder.Append("], ");
                            builder2.Append("System.DBNull, null");
                            builder2.Append("], ");
                        }
                        else
                        {
                            builder.Append(dataParameter.Value.ToString());
                            builder.Append("], ");
                            builder2.Append(dataParameter.DbType.ToString());
                            builder2.Append(", ");
                            builder2.Append(dataParameter.Value.GetType().ToString());
                            builder2.Append("], ");
                        }
                    }
                    string str2 = "Statement Id: [" + mappedStatement.Statement.Id + "] Parameters: [0]";
                    string str3 = "";
                    if (builder2.Length != 0)
                    {
                        str2 = "Statement Id: [" + mappedStatement.Statement.Id + "] Parameters: [" + builder.ToString(0, builder.Length - 2) + "]";
                        str3 = "Statement Id: [" + mappedStatement.Statement.Id + "] Types: [" + builder2.ToString(0, builder2.Length - 2) + "]";
                    }
                    return (preparedSql + Environment.NewLine + str2 + (!string.IsNullOrEmpty(str3) ? (Environment.NewLine + str3) : ""));
                }
                catch
                {
                }
                return "can't get the sql error info";
            }
    
        }
        [Serializable]//可序列化
        public class BaseSqlMapDao1 : IDao
        {
            protected const int PAGE_SIZE = 4;
    
            protected string sqlMapNamespace;
    
            public BaseSqlMapDao1()
            {
    
            }
    
            protected string WrapStatementName(string statementName)
            {
                return (this.sqlMapNamespace + "." + statementName);
            }
            protected ISqlMapper GetLocalSqlMap()
            {
                SqlMapDaoSession localDaoSession = (SqlMapDaoSession)this.DaoManager.LocalDaoSession;
                return localDaoSession.SqlMap;
            }
    
            public IDaoManager DaoManager { get; set; }
            protected object ExecuteDelete(string statementName, object parameterObject)
            {
                object obj2;
                ISqlMapper localSqlMap = this.GetLocalSqlMap();
                try
                {
                    obj2 = localSqlMap.Delete(statementName, parameterObject);
                }
                catch (Exception exception)
                {
                    string str = IbatisDaoExceptionHelper.GetStatementDetail(localSqlMap, statementName, parameterObject);
                    IBatisNetException exception2 = new IBatisNetException("Error executing delete '" + statementName + "'.  Cause: " + exception.Message, exception);
                    exception2.Data.Add("sqlTrace", str);
                    throw exception2;
                }
                return obj2;
            }
    
            protected object ExecuteInsert(string statementName, object parameterObject)
            {
                object obj2;
                ISqlMapper localSqlMap = this.GetLocalSqlMap();
                try
                {
                    obj2 = localSqlMap.Insert(statementName, parameterObject);
                }
                catch (Exception exception)
                {
                    string str = IbatisDaoExceptionHelper.GetStatementDetail(localSqlMap, statementName, parameterObject);
                    IBatisNetException exception2 = new IBatisNetException("Error executing insert '" + statementName + "'.  Cause: " + exception.Message, exception);
                    exception2.Data.Add("sqlTrace", str);
                    throw exception2;
                }
                return obj2;
            }
    
            protected int ExecuteUpdate(string statementName, object parameterObject)
            {
                int num;
                ISqlMapper localSqlMap = this.GetLocalSqlMap();
                try
                {
                    num = localSqlMap.Update(statementName, parameterObject);
                }
                catch (Exception exception)
                {
                    string str = IbatisDaoExceptionHelper.GetStatementDetail(localSqlMap, statementName, parameterObject);
                    IBatisNetException exception2 = new IBatisNetException("Error update  '" + statementName + "'.  Cause: " + exception.Message, exception);
                    exception2.Data.Add("sqlTrace", str);
                    throw exception2;
                }
                return num;
            }
    
    
            protected int ExecuteUpdate(string statementName, object parameterObject)
            {
                int num;
                ISqlMapper localSqlMap = this.GetLocalSqlMap();
                try
                {
                    num = localSqlMap.Update(statementName, parameterObject);
                }
                catch (Exception exception)
                {
                    string str = IbatisDaoExceptionHelper.GetStatementDetail(localSqlMap, statementName, parameterObject);
                    IBatisNetException exception2 = new IBatisNetException("Error update  '" + statementName + "'.  Cause: " + exception.Message, exception);
                    exception2.Data.Add("sqlTrace", str);
                    throw exception2;
                }
                return num;
            }
    
    
            protected IList<T> ExecuteQueryForList<T>(string statementName, object parameterObject)
            {
                IList<T> list;
                ISqlMapper localSqlMap = this.GetLocalSqlMap();
                try
                {
                    list = localSqlMap.QueryForList<T>(statementName, parameterObject);
                }
                catch (Exception exception)
                {
                    string str = IbatisDaoExceptionHelper.GetStatementDetail(localSqlMap, statementName, parameterObject);
                    IBatisNetException exception2 = new IBatisNetException("Error executing query '" + statementName + "' for list.  Cause: " + exception.Message, exception);
                    exception2.Data.Add("sqlTrace", str);
                    throw exception2;
                }
                return list;
            }
        }
    }
  • 相关阅读:
    胖虎都看得懂的CSS入门
    Python-ORM之sqlalchemy的简单使用
    类似fabric主机管理demo
    Redis 数据库学习
    sublime 3插件安装记录
    斐波那契数列—java实现
    mysql基础操作记录
    [转]修改github已提交的用户名和邮箱
    python nose的html报告优化
    python report中文显示乱码
  • 原文地址:https://www.cnblogs.com/slu182/p/4253252.html
Copyright © 2011-2022 走看看