.netcorewebapi swagger mysql dapper遇到的各种问题

本文介绍如何使用Swagger搭建API文档并格式化输出,同时演示利用Dapper进行MySQL数据库操作的方法,包括配置、基本CRUD及执行自定义SQL。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0、搭建swagger

引入swagger的nuget包

       在setup的public void ConfigureServices(IServiceCollection services)方法中注册swagger中间件

在setup的 public void Configure(IApplicationBuilder app, IWebHostEnvironment env)方法中使用中间件

在launchSettings.json文件中修改启动的url

浏览器的地址

0.1格式化swagger输出的时间

在setup的 public void ConfigureServices(IServiceCollection services)方法中加入

0.2统一swagger输出字符流

在setup的  public void ConfigureServices(IServiceCollection services)方法中添加 .AddSwaggerGenNewtonsoftSupport();支持

1、dapper操作mysql数据库

引入dapper和mysql包

在setup的 public void ConfigureServices(IServiceCollection services)方法中注册数据库支持


 

在appsettings.json添加数据库连接字符串

dapper操作数据库代码

    public interface ISqlExecutor
    {
        /// <summary>
        /// 获取 数据库类型
        /// </summary>
        DatabaseType DatabaseType { get; }

        /// <summary>
        /// 重写以获取数据连接对象
        /// </summary>
        /// <returns></returns>
        IDbConnection GetDbConnection();

        /// <summary>
        /// 查询指定SQL的结果集
        /// </summary>
        /// <typeparam name="TResult">结果集类型</typeparam>
        /// <param name="sql">查询的SQL语句</param>
        /// <param name="param">SQL参数</param>
        /// <returns>结果集</returns>
        IEnumerable<TResult> FromSql<TResult>(string sql, object param = null);

        /// <summary>
        /// 执行指定的SQL语句
        /// </summary>
        /// <param name="sql">执行的SQL语句</param>
        /// <param name="param">SQL参数</param>
        /// <returns>操作影响的行数</returns>
        int ExecuteSqlCommand(string sql, object param = null);
    }
/// <summary>
    /// MySql的Dapper-Sql功能执行
    /// </summary>
    /// <typeparam name="TEntity">实体类型</typeparam>
    /// <typeparam name="TKey">编号类型</typeparam>
    public class MySqlDapperSqlExecutor : SqlExecutorBase
    {
        /// <summary>
        /// 初始化一个<see cref="SqlExecutorBase{TEntity}"/>类型的新实例
        /// </summary>
        public MySqlDapperSqlExecutor(IOptions<ServiceApiSettingsOptions> options) : base(options.Value.ConnectionString) { }

        /// <summary>
        /// 获取 数据库类型
        /// </summary>
        public override DatabaseType DatabaseType => DatabaseType.DB2;

        /// <summary>
        /// 重写以获取数据连接对象
        /// </summary>
        /// <param name="connectionString">数据连接字符串</param>
        /// <returns></returns>
        public override IDbConnection GetDbConnection()
        {
            return new MySqlConnection(_connectionString);
        }
 /// <summary>
    /// 表示数据库类型,如SqlServer,Sqlite等
    /// </summary>
    public enum DatabaseType
    {
        /// <summary>
        /// SqlServer数据库类型
        /// </summary>
        SqlServer,
        /// <summary>
        /// Sqlite数据库类型
        /// </summary>
        Sqlite,
        /// <summary>
        /// MySql数据库类型
        /// </summary>
        MySql,
        /// <summary>
        /// PostgreSql数据库类型
        /// </summary>
        PostgreSql,
        /// <summary>
        /// Oracle数据库类型
        /// </summary>
        Oracle,
        /// <summary>
        /// DB2数据库类型
        /// </summary>
        DB2
    }
    /// <summary>
    /// Sql功能执行基类
    /// </summary>
    public abstract class SqlExecutorBase : ISqlExecutor
    {
        protected readonly string _connectionString;

        /// <summary>
        /// 初始化一个<see cref="SqlExecutorBase{TEntity}"/>类型的新实例
        /// </summary>
        protected SqlExecutorBase(string connectionString)
        {
            _connectionString = connectionString;
        }

        /// <summary>
        /// 获取 数据库类型
        /// </summary>
        public abstract DatabaseType DatabaseType { get; }

        /// <summary>
        /// 重写以获取数据连接对象
        /// </summary>
        /// <returns></returns>
        public abstract IDbConnection GetDbConnection();

        /// <summary>
        /// 查询指定SQL的结果集
        /// </summary>
        /// <typeparam name="TResult">结果集类型</typeparam>
        /// <param name="sql">查询的SQL语句</param>
        /// <param name="param">SQL参数</param>
        /// <returns>结果集</returns>
        public virtual IEnumerable<TResult> FromSql<TResult>(string sql, object param = null)
        {
            using IDbConnection db = GetDbConnection();
            return db.Query<TResult>(sql, param);
        }

        /// <summary>
        /// 执行指定的SQL语句
        /// </summary>
        /// <param name="sql">执行的SQL语句</param>
        /// <param name="param">SQL参数</param>
        /// <returns>操作影响的行数</returns>
        public virtual int ExecuteSqlCommand(string sql, object param = null)
        {
            using IDbConnection db = GetDbConnection();
            return db.Execute(sql, param);
        }
    }

1.0.使用dapper操作数据库

控制器构造函数中注入操作对象          

使用

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值