.net core webapi dapper 使用案例

1、使用nuget下载对应的dapper 包,如下:

PackagesNuGet
Dapper.Extension.AspNetCore NuGet package
Dapper.Extension.AspNetCore.MySql NuGet package

 

2、在Startup 类中的  ConfigureServices 方法中加入如下代码:

    services.AddDapperForMySql(options =>
            {
                options.ConnectionString = Configuration.GetConnectionString("MySql");
            });

3、在appsetting.json文件加入数据库连接配置,如下:

复制代码
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "ConnectionStrings": {
"MySql": "server=192.168.1.238;database=rfid_db;user id=root;password=123456;port=3306;" } }
复制代码

4、 添加SysUser model 如下:

复制代码
 [Table("SysUsers")]
    public class SysUser
    {
        [Key]
        public int uId { get; set; }

        public string userName { get; set; }

        public string loginName { get; set; }

        public string pwd { get; set; }
    }
复制代码

5、添加 ISysUserService 接口:

复制代码
public interface ISysUserService
    {
        List<SysUser> GetList(int pageIndex, int pageSize);

        long Add(SysUser user);

        bool Update(SysUser user);

        bool Del(SysUser user);

        bool TestTran(SysUser user);

    }
复制代码

6、添加对ISysUserService  的实现类 SysUserService 

复制代码
using coreTest.IService;
using coreTest.Model;
using coreTest.Service.Mysql;
using Dapper.Extension.AspNetCore;
using System;
using System.Collections.Generic;
using System.Text;

namespace coreTest.Service
{
    public class SysUserService : ISysUserService
    {

        private readonly IDapper dapper;

        public SysUserService(IDapper _dapper)
        {
            dapper = _dapper;
        }


        /// <summary>
        /// 返回值是对应表添加的对应记录的主键值
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public long Add(SysUser user)
        {
            var res = dapper.Insert<SysUser>(user);
            return res;

        }

        public bool Del(SysUser user)
        {
            return dapper.Delete<SysUser>(user);

        }

        public List<SysUser> GetList(int pageIndex, int pageSize)
        {
            var result = dapper.QueryPage<SysUser>(SysUserSql.getCountSql, SysUserSql.getListSql, pageIndex, pageSize);
            return result.Contents;
        }

        public bool Update(SysUser user)
        {
            return dapper.Update<SysUser>(user);
        }

        public bool TestTran(SysUser user)
        {
            bool result = false;

            using (var transaction = dapper.BeginTransaction())
            {
                try
                {
                    int b = 0;
                    dapper.Insert<SysUser>(user);
                    int z = 1 / b;
                    dapper.Update<SysUser>(user);
                    transaction.Commit();

                    result = true;
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    transaction.Rollback();
                    result = false;
                  
                }
            }
            return result;
        }
    }
}
复制代码

7、添加SysUserController 控制器:

复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using coreTest.IService;
using coreTest.Model;
using Dapper.Extension.AspNetCore;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;

namespace coreTest.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class SysUserController : ControllerBase
    {
        private readonly ILogger<SysUserController> logger;
        private readonly IDapper dapper;
        private readonly ISysUserService sysUserService;

        public SysUserController(ILogger<SysUserController> _logger, IDapper _dapper, ISysUserService _sysUserService)
        {

            logger = _logger;
            dapper = _dapper;
            sysUserService = _sysUserService;
        }

        [HttpGet]
        [Route("Index")]
        public JsonResult Index(int pageIndex = 1, int pageSize = 10)
        {
            var result = sysUserService.GetList(pageIndex, pageSize);
            return new JsonResult(result);
        }

        [HttpGet]
        [Route("Del")]
        public JsonResult Del(int uId)
        {
            SysUser user = new SysUser()
            {
                uId = uId
            };
            var result = sysUserService.Del(user);
            return new JsonResult(result);
        }


        [HttpPost]
        [Route("Add")]
        public JsonResult Add(SysUser sysUser)
        {
           
            var result = sysUserService.Add(sysUser);
            return new JsonResult(result);
        }



        [HttpPost]
        [Route("Update")]
        public JsonResult Update(SysUser sysUser)
        {

            var result = sysUserService.Update(sysUser);
            return new JsonResult(result);
        }

        /// <summary>
        /// 测试事务
        /// </summary>
        /// <param name="sysUser"></param>
        /// <returns></returns>

        [HttpPost]
        [Route("TestTran")]
        public JsonResult TestTran(SysUser sysUser)
        {
            //测试事务
            var result = sysUserService.TestTran(sysUser);
            return new JsonResult(result);
        }

    }
}
复制代码

8、在Startup 类中的 ConfigureServices 方法中添加如下代码:


            services.AddTransient<IModuleService, ModuleService>();
            services.AddTransient<ISysUserService, SysUserService>();

 

posted @   大空白纸  阅读(1012)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示