.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); } } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律