• .netcore下Dapper helper类


    using Dapper;
    using Microsoft.Extensions.Configuration;
    using MySql.Data.MySqlClient;
    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace MyCommon.Repositories
    {
      
        public interface IDbRepository
        {
            /// <summary>
            /// 查询数据
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            Task<IEnumerable<dynamic>> QueryAsync(string sql, object param = null);
    
            /// <summary>
            /// 查询数据
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            IEnumerable<dynamic> QueryDynamic(string sql, object param = null);
    
            /// <summary>
            /// 查询数据集合
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            IEnumerable<T> Query<T>(string sql, object param = null);
    
            /// <summary>
            /// 查询一条数据
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            T QueryFirstOrDefault<T>(string sql, object param = null);
    
            /// <summary>
            /// 查询数据是否存在
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            bool QueryAny(string sql, object param = null);
    
            /// <summary>
            /// 执行非查询操作
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            int Execute(string sql, object param = null);
    
            /// <summary>
            /// 
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            object ExecuteScalar(string sql, object param = null);
        }
    
        /// <summary>
        /// 
        /// </summary>
        public class DbRepository : IDbRepository
        {
            private readonly IConfiguration _configuration;
    
            /// <summary>
            /// 数据库从库连接字符串
            /// </summary>
            public IDbConnection _dbConnectionSlave { get { return new MySqlConnection(_configuration["ConnectionStrings:SlaveConnectionRead"]); } }
    
            /// <summary>
            /// 数据库主库连接字符串
            /// </summary>
            public IDbConnection _dbConnectionMaster { get { return new MySqlConnection(_configuration["ConnectionStrings:MasterConnection"]); } }
    
            /// <summary>
            /// 
            /// </summary>
            /// <param name="configuration"></param>
            public DbRepository(IConfiguration configuration)
            {
                _configuration = configuration;
            }
    
            /// <summary>
            /// 异步查询数据
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            public async Task<IEnumerable<dynamic>> QueryAsync(string sql, object param = null)
            {
                using (_dbConnectionSlave)
                {
                    return await _dbConnectionSlave.QueryAsync(sql, param);
                }
            }
    
            /// <summary>
            /// 查询数据
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            public IEnumerable<dynamic> QueryDynamic(string sql, object param = null)
            {
                using (_dbConnectionSlave)
                {
                    return _dbConnectionSlave.Query(sql, param);
                }
            }
    
            /// <summary>
            /// 查询数据集合
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            public IEnumerable<T> Query<T>(string sql, object param = null)
            {
                using (_dbConnectionSlave)
                {
                    return _dbConnectionSlave.Query<T>(sql, param);
                }
            }
    
            /// <summary>
            /// 查询一条数据
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            public T QueryFirstOrDefault<T>(string sql, object param = null)
            {
                using (_dbConnectionSlave)
                {
                    return _dbConnectionSlave.QueryFirstOrDefault<T>(sql, param);
                }
            }
    
            /// <summary>
            /// 查询数据是否存在
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            public bool QueryAny(string sql, object param = null)
            {
                using (_dbConnectionSlave)
                {
                    return _dbConnectionSlave.ExecuteScalar(sql, param) != null;
                }
            }
    
            /// <summary>
            /// 执行非查询操作
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            public int Execute(string sql, object param = null)
            {
                using (_dbConnectionMaster)
                {
                    return _dbConnectionMaster.Execute(sql, param);
                }
            }
    
            /// <summary>
            /// 
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            public object ExecuteScalar(string sql, object param = null)
            {
                using (_dbConnectionSlave)
                {
                    return _dbConnectionSlave.ExecuteScalar(sql, param);
                }
            }
        }
    }
  • 相关阅读:
    Git常用命令大全
    前端开发常用正则表达式
    如何让360、遨游、猎豹等双核浏览器默认以webkit内核渲染网页?
    IE如何兼容placeholder属性
    利用sublime的snippet功能快速创建代码段
    浏览器内核总结
    display:inline-block引发的间隙问题解决办法
    常用的CSSreset整理
    input输入框的border-radius属性在IE8下的完美兼容
    详细讲解Android中的AbsListView的源码
  • 原文地址:https://www.cnblogs.com/personblog/p/14506165.html
Copyright © 2020-2023  润新知