Dapper是一个轻量级的 ORM(对象关系映射)框架,专门用于 .NET 平台。
Dapper 是一个功能强大且性能优越的 ORM 框架,特别适合那些希望保持原生 SQL 灵活性和高效性能的开发人员使用。
Dapper 的优点包括:
在使用 Dapper 的项目中,不要用 dapper 去命名任何文件,包括项目名和解决方案名,因为这会导致命名空间冲突,从而使用不了 Dapper 。
下面的截图中,可以见到项目名称使用了 Dapper,这导致我启动项目后,调用 API 一直报错,最终重新创建了项目才得以解决。
先安装 Dapper 包,在项目上 右键——管理NuGet程序包,打开 NuGet 包管理器。
在 “浏览” 中搜索 Dapper,在搜索结果中点击 Dapper 进行安装。
安装完成后在项目下创建 Utility 文件夹
因为我没有把数据库连接字符串写在 Dapper.cs 工具类中,而是写在了 Web.config 文件中,所以先写一个操作 Web.config 文件的工具类:Web.config 下载
在 Utility 文件夹中创建 ConfigUtil.cs 工具类,这个工具类的作用是设置 Web.config 文件中 connectionStrings 和 appSettings 里面的键值对信息。
写入 ConfigUtil.cs 工具类的内容:ConfigUtil.cs 下载
需要注意的是 ConfigUtil.cs 工具类获取 .config 的配置文件时,对于 Web API 和 exe 程序的设置不一样,代码中有备注说明。
在 Utility 文件夹中创建 DapperUtil.cs 工具类
写入 DapperUtil.cs 工具类的内容:DapperUtil.cs 下载
如果 DapperUtil.cs 工具类里面没有用 DbProviderFactories 工厂创建数据库连接对象, 而是用 SqlConnection 或 MySqlConnection 直接创建数据库连接,那么使用 MySqlConnection 时,需要安装 MySql.Data 包。
在 MySQL 数据库中,创建 Users 表。
create table users(
id int primary key auto_increment comment 'id',
code varchar(36) comment '用户代码',
name varchar(55) comment '用户姓名',
age int comment '年龄',
pwd varchar(55) comment '密码',
if_active char(1) comment '是否有效',
if_delete char(1) comment '是否删除',
update_time datetime comment '更新时间',
create_time datetime comment '记录时间'
) comment = '用户表';
在 Models 文件夹中创建实体类 Users(没有 Models 文件夹则先创建)
在项目下创建 Daos 文件夹
创建 UsersDao.cs 类
在 UsersDao.cs 类中写入操作数据库的方法:UsersDao.cs 下载
在项目下创建 Services 文件夹
创建 UsersService.cs 类
在 UsersService 中写入 调用 UsersDao 的方法:UsersService.cs 下载
先在 Models 文件夹中创建 API 接口的信息返回类 BackMsg.cs
再在 Models 文件夹中创建自定义异常类 CustomException.cs,用于抛出自定义的异常信息,并在 Controller 中进行 Catch。
写入 CustomException.cs 异常类的内容:CustomException.cs 下载
接下来在 Controllers 文件夹下 右键——添加——Web API控制器类,创建 UserController.cs
在 UserController 中写入用户相关的 API 接口,采用 POST 的调用方式:UsersController.cs 下载
启动项目成功
通过 Postman 调用创建用户的 API,返回成功
查看数据库中是否成功创建
更新用户年龄为 30,返回成功
查看数据库中是否更新成功
调用 API 进行删除(逻辑删除)
查看数据库中是否删除成功
调用 API 进行查询
API 接口返回 JSON 时,用的是 JsonConvert.SerializeObject(),默认返回的时间格式是:2024-06-02T22:58:06 。
这不是我们需要的时间格式,所以对返回的时间格式进行设置,设置 JSON 中时间格式的方法有 2 个:
// 设置日期格式
var settings = new JsonSerializerSettings
{
DateFormatString = "yyyy-MM-dd HH:mm:ss"
};
// 序列化对象并设置日期格式
string json = JsonConvert.SerializeObject(obj, settings);
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
// 统一对 JsonConvert.SerializeObject() 返回的日期格式进行设置
// 因为 JsonConvert.SerializeObject() 默认返回的日期格式是 2024-06-02T22:58:06,所以要设置一下
JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
DateFormatString = "yyyy-MM-dd HH:mm:ss"
};
}
设置完时间格式后,重新调用获取用户的 API,观察到时间格式已经变成了 2024-06-02 22:58:06 的格式。
以上步骤中创建的项目可下载:Web API 项目下载