数据库操作封装的突然想法

使用Action和Function做参数封装数据库操作,可以在一个连接中进行多个操作,使用起来比较方便

封装的方法:

 /// <summary>
        /// 执行sql
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="para"></param>
        public static void Execute(Action<IDbConnection> func)
        {
            using(IDbConnection conn = util.DB.CreateConnection())
            {
                func(conn);
            }
        }

        /// <summary>
        /// 执行sql,并返回结果
        /// </summary>
        /// <param name="func"></param>
        /// <returns></returns>
        public static T ExecuteResult<T>(Func<IDbConnection,T> func)
        {
            using (IDbConnection conn = util.DB.CreateConnection())
            {
                T obj = func(conn);
                return obj;
            }
        }

只执行sql,插入行政规划记录

 public static void add(Xzqh xzqh)
        {
            Dal.Common.Execute((IDbConnection conn) =>
            {
                conn.Execute("insert into t_code_xzqh(code,name,parentcode) values(@code,@name,@parentcode)", xzqh);
            });
        }

获取行政规划树:

 public static IEnumerable<Xzqh> listTree()
        {
            var robj = Dal.Common.ExecuteResult((IDbConnection conn) =>
            {
                var query = conn.Query<Xzqh>("select * from t_code_xzqh where parentcode is null order by code");
                List<Xzqh> list = new List<Xzqh>();
                foreach (var item in query)
                {
                    var q = getChildren(conn, item);
                    list.Add(q);
                }
                return list;
            });
            return robj;
        }


        private static Xzqh getChildren(IDbConnection conn, Xzqh parent)
        {
            if (parent.children == null)
            {
                parent.children = conn.Query<Xzqh>("select * from t_code_xzqh where parentcode=@code order by code", new { code = parent.code }).ToList();
            }
            foreach (var c in parent.children)
            {
                if (conn.ExecuteScalar<int>("select count(0) from t_code_xzqh where parentcode=@code", new { code = c.code }) > 0)
                {
                    getChildren(conn, c);
                }
            }
            return parent;
        }

注:数据库操作使用的是Dapper类库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值