zoukankan      html  css  js  c++  java
  • 基于 Dapper 的一个 DbUtils

        /// <summary>
        /// v1.0
        /// </summary>
        public partial class DbUtils
        {
            string ConnectionString;
            /// <summary>
            /// 
            /// </summary>
            /// <param name="dbName"></param>
            public DbUtils(string dbName)
            {
                ConnectionString = $"server=.;database={dbName};uid=;pwd=;";
            }
    
            IDbConnection OpenConnection()
            { 
                var conn = new NpgsqlConnection(ConnectionString);
                conn.Open();
                return conn;
            }
    
            public int Execute(string sql, object param = null, IDbTransaction transaction = null)
            {
                using (var conn = OpenConnection())
                {
                    var result = conn.Execute(sql, param, transaction);
                    conn.Close();
                    conn.Dispose();
                    return result;
                }
            }
    
            public T ExecuteScalar<T>(string sql, object param = null, IDbTransaction transaction = null)
            {
                using (var conn = OpenConnection())
                {
                    var result = conn.ExecuteScalar<T>(sql, param, transaction);
                    conn.Close();
                    conn.Dispose();
                    return result;
                }
            }
    
            public IEnumerable<T> Query<T>(string sql, object param = null, IDbTransaction transaction = null)
            {
                using (var conn = OpenConnection())
                {
                    var result = conn.Query<T>(sql, param, transaction);
                    conn.Close();
                    conn.Dispose();
                    return result;
                }
            }
    
            public IEnumerable<T> Query<T>(string sql, int page, int limit, object param = null, IDbTransaction transaction = null)
            {
                int offset = (page - 1) * limit;
                sql += $" limit {limit} offset {offset}";
                return Query<T>(sql, param);
            }
    
            public T QueryFirst<T>(string sql, object param = null, IDbTransaction transaction = null)
            {
                using (var conn = OpenConnection())
                {
                    var result = conn.QueryFirst<T>(sql, param, transaction);
                    conn.Close();
                    conn.Dispose();
                    return result;
                }
            }
    
            public T QueryFirstOrDefault<T>(string sql, object param = null, IDbTransaction transaction = null)
            {
                using (var conn = OpenConnection())
                {
                    var result = conn.QueryFirstOrDefault<T>(sql, param, transaction);
                    conn.Close();
                    conn.Dispose();
                    return result;
                }
            }
    
            //public static T QueryMultiple<T>(string sql, object param = null, IDbTransaction transaction = null)
            //{
            //    using (var conn = OpenConnection())
            //    {
            //        var result = conn.QueryMultiple(sql, param, transaction);
            //        conn.Close();
            //        conn.Dispose();
            //        return result;
            //    }
            //}
    
            public async Task<int> ExecuteAsync(string sql, object param = null, IDbTransaction transaction = null)
            {
                using (var conn = OpenConnection())
                {
                    var result = await conn.ExecuteAsync(sql, param, transaction);
                    conn.Close();
                    conn.Dispose();
                    return result;
                }
            }
    
            public async Task<T> ExecuteScalarAsync<T>(string sql, object param = null, IDbTransaction transaction = null)
            {
                using (var conn = OpenConnection())
                {
                    var result = await conn.ExecuteScalarAsync<T>(sql, param, transaction);
                    conn.Close();
                    conn.Dispose();
                    return result;
                }
            }
    
            public async Task<IEnumerable<T>> QueryAsync<T>(string sql, object param = null, IDbTransaction transaction = null)
            {
                using (var conn = OpenConnection())
                {
                    var result = await conn.QueryAsync<T>(sql, param, transaction);
                    conn.Close();
                    conn.Dispose();
                    return result;
                }
            }
    
            public async Task<IEnumerable<T>> QueryAsync<T>(string sql, int page, int limit, object param = null, IDbTransaction transaction = null)
            {
                int offset = (page - 1) * limit;
                sql += $" limit {limit} offset {offset}";
                return await QueryAsync<T>(sql, param);
            }
    
            public async Task<T> QueryFirstAsync<T>(string sql, object param = null, IDbTransaction transaction = null)
            {
                using (var conn = OpenConnection())
                {
                    var result = await conn.QueryFirstAsync<T>(sql, param, transaction);
                    conn.Close();
                    conn.Dispose();
                    return result;
                }
            }
    
            public async Task<T> QueryFirstOrDefaultAsync<T>(string sql, object param = null, IDbTransaction transaction = null)
            {
                using (var conn = OpenConnection())
                {
                    var result = await conn.QueryFirstOrDefaultAsync<T>(sql, param, transaction);
                    conn.Close();
                    conn.Dispose();
                    return result;
                }
            }
        }
        /// <summary>
        /// 
        /// </summary>
        public partial class DbUtils
        {
            /// <summary>
            /// 
            /// </summary>
            /// <param name="table"></param>
            /// <param name="fields"></param>
            /// <returns></returns>
            public static string GetInsertSQL(string table, string fields)
            {
                return $"INSERT INTO {table}({fields}) VALUES ({GetInsertFields(fields)});";
            }
            /// <summary>
            /// 
            /// </summary>
            /// <param name="table"></param>
            /// <param name="fields"></param>
            /// <returns></returns>
            public static string GetInsertSQLReturnId(string table, string fields)
            {
                return $"INSERT INTO {table}({fields}) VALUES ({GetInsertFields(fields)}) RETURNING Id;";
            }
            /// <summary>
            /// 
            /// </summary>
            /// <param name="talbe"></param>
            /// <param name="fields"></param>
            /// <returns></returns>
            public static string GetUpdateSQL(string talbe, string fields)
            {
                return $"UPDATE {talbe} SET {GetUpdateFields(fields)} where id=@id";
            }
    
            static string GetInsertFields(string value)
            {
                var result = value.Split(new[] { ',', ' ', '
    ', '
    ' }, StringSplitOptions.RemoveEmptyEntries);
                var fields = string.Join(",@", result);
                return "@" + fields;
            }
    
            static string GetUpdateFields(string value)
            {
                var collection = value.Split(new[] { ',', ' ', '
    ', '
    ' }, StringSplitOptions.RemoveEmptyEntries);
    
                var sb = new StringBuilder();
                foreach (var item in collection)
                {
                    sb.Append(item);
                    sb.Append("=@");
                    sb.Append(item);
                    sb.Append(",");
                }
    
                if (sb.Length > 1)
                    sb.Remove(sb.Length - 1, 1);
    
                return sb.ToString();
            }
        }
  • 相关阅读:
    10大经典排序算法动图演示,看这篇就够了!
    SSM是什么框架?
    SSM框架面试题及答案整理
    SSM框架面试题及答案整理
    SpringMVC工作原理详解
    synchronized关键字的用法总结
    Java常用数据结构之Set之TreeSet
    jQuery学习笔记(简介,选择器)
    你自认为理解了JavaScript?
    JDK1.5新特性,基础类库篇,XML增强
  • 原文地址:https://www.cnblogs.com/linsongbin/p/6273616.html
Copyright © 2011-2022 走看看