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

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操作数据库

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

使用

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值