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操作数据库
控制器构造函数中注入操作对象
使用