Dapper


前言

记录学习成果,以便温故而知新

Dapper是一款轻量级ORM框架,上手容易,满足基本需求,所以记录使用过程如下

1.安装包

NuGet安装Dapper

2.准备数据表与实体类

t_user表

CREATE TABLE `t_user` (
  `Id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `Name` varchar(20) DEFAULT NULL COMMENT '姓名',
  `Age` int(11) DEFAULT NULL COMMENT '年龄',
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表';

User类

	/// <summary>
    /// 用户表t_user
    /// </summary>
    public class User
    {
        /// <summary>
        /// 主键、自增
        /// </summary>
        public long Id { get; set; }
        /// <summary>
        /// 姓名
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// 年龄
        /// </summary>
        public Nullable<int> Age { get; set; }

        public override string ToString()
        {
            return string.Format("User:Id=>{0},Name=>{1},Age=>{2}", Id, Name, Age);
        }
     }

3.工具类

DapperHelper类

    /// <summary>
    /// 工具类
    /// </summary>
    public class DapperHelper
    {
        /// <summary>
        /// 连接MySQL数据库
        /// </summary>
        /// <returns></returns>
        public static MySqlConnection MySqlCon()
        {
            string mysqlConnectionStr = "server=localhost;database=test;uid=root;pwd=root;charset=utf8;port=3306";
            var connection = new MySqlConnection(mysqlConnectionStr);
            connection.Open();
            return connection;
        }

        /// <summary>
        /// insert或update或delete
        /// </summary>
        /// <param name="sqlStr"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public int Excute(string sqlStr, object param)
        {
            using (IDbConnection conn = DapperHelper.MySqlCon())
            {
                var trans = conn.BeginTransaction();//开启事务
                int result = -1;
                try
                {
                    result = conn.Execute(sqlStr, param, trans);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    trans.Rollback();//事务回滚
                    return -1;
                }
                trans.Commit();//事务提交
                return result;
            }
        }

        /// <summary>
        /// 查询条数
        /// </summary>
        /// <param name="sqlStr"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public long Count(string sqlStr, object param)
        {
            using (IDbConnection conn = DapperHelper.MySqlCon())
            {
                return conn.QueryFirst<long>(sqlStr, param);
            }
        }

        /// <summary>
        /// 查询单个
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="sqlStr"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public T QueryObject<T>(string sqlStr, object param)
        {
            using (IDbConnection conn = DapperHelper.MySqlCon())
            {
                return conn.QueryFirstOrDefault<T>(sqlStr, param);
            }
        }

        /// <summary>
        /// 查询列表
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="sqlStr"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public List<T> QueryList<T>(string sqlStr, object param)
        {
            using (IDbConnection conn = DapperHelper.MySqlCon())
            {
                return conn.Query<T>(sqlStr, param) as List<T>;
            }
        }
    }

4.调用

建立单元测试项目测试

	[TestClass]
    public class UnitTestDapperHelper
    {
        private readonly DapperHelper dapperHelper = new DapperHelper();
        [TestMethod]
        public void TestInsert()
        {
            //插入Tom
            User Tom = new User() { Name = "Tom", Age = 2 };
            int result = dapperHelper.Excute("insert into t_user(Name, Age) values(@Name, @Age)", Tom);
            Assert.AreEqual(1, result);

            //插入Jerry
            User Jerry = new User() { Name = "Jerry", Age = 1 };
            result = dapperHelper.Excute("insert into t_user(Name, Age) values(@Name, @Age)", Jerry);
            Assert.AreEqual(1, result);
        }

        [TestMethod]
        public void TestQueryList()
        {
            //查所有
            dapperHelper.QueryList<User>("select * from t_user", null).ForEach(Console.WriteLine);
        }

        [TestMethod]
        public void TestCount()
        {
            //查总条数
            long total = dapperHelper.Count("select count(Id) as total from t_user", null);
            Console.WriteLine(total);
        }

        [TestMethod]
        public void TestQueryObject()
        {
            //查询单个对象
            User user = dapperHelper.QueryObject<User>("select * from t_user where Id = @Id", new User() { Id = 1 });
            Console.WriteLine(user);
        }

        [TestMethod]
        public void TestUpdate()
        {
            //修改对象
            int result = dapperHelper.Excute("update t_user set Name = @Name, Age = @Age where Id = @Id",
                new User() { Id = 1, Name = "Tomcat", Age = 3 });
        }

        [TestMethod]
        public void TestDelete()
        {
            //删除
            int result = dapperHelper.Excute("delete from t_user where Id = @Id",
                new User() { Id = 2 });
        }
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值