首页 > 数据库 >Dapper-OracleSQLHelper 的通用封装

Dapper-OracleSQLHelper 的通用封装

时间:2023-05-25 17:11:12浏览次数:46  
标签:封装 using param return static sql OracleSQLHelper Dapper con

 /// <summary>
    /// Oracle Help 封装使用
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public class OracleSQLDapperHelper<T> where T : class
    {
        /// <summary>
        /// 数据库连接字符串
        /// </summary>
      /*  private static readonly string connectionString =
        ConfigurationManager.ConnectionStrings["OracleConn"].ConnectionString;*/
      private static readonly string connectionString = @"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)
       (HOST=192.168.0.139)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=m4mestdb)))
       ;User ID=yms;Password=yms;";

        /// <summary>
        /// 查询列表
        /// </summary>
        /// <param name="sql">查询的sql</param>
        /// <param name="param">替换参数</param>
        /// <returns></returns>
        public static List<T> Query(string sql, object param)
        {
            using (IDbConnection con = new OracleConnection(connectionString))
            {
                return con.Query<T>(sql, param).ToList();
            }
        }

        /// <summary>
        /// 查询第一个数据
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public static T QueryFirst(string sql, object param)
        {
            using (IDbConnection con = new OracleConnection(connectionString))
            {
                return con.QueryFirst<T>(sql, param);
            }
        }

        /// <summary>
        /// 查询第一个数据没有返回默认值
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public static T QueryFirstOrDefault(string sql, object param)
        {
            using (IDbConnection con = new OracleConnection(connectionString))
            {
                return con.QueryFirstOrDefault<T>(sql, param);
            }
        }

        /// <summary>
        /// 查询单条数据
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public static T QuerySingle(string sql, object param)
        {
            using (IDbConnection con = new OracleConnection(connectionString))
            {
                return con.QuerySingle<T>(sql, param);
            }
        }

        /// <summary>
        /// 查询单条数据没有返回默认值
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public static T QuerySingleOrDefault(string sql, object param)
        {
            using (IDbConnection con = new OracleConnection(connectionString))
            {
                return con.QuerySingleOrDefault<T>(sql, param);
            }
        }

        /// <summary>
        /// 增删改
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public static int Execute(string sql, object param)
        {
            using (IDbConnection con = new OracleConnection(connectionString))
            {
                return con.Execute(sql, param);
            }
        }

        /// <summary>
        /// Reader获取数据
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public static IDataReader ExecuteReader(string sql, object param)
        {
            using (IDbConnection con = new OracleConnection(connectionString))
            {
                return con.ExecuteReader(sql, param);
            }
        }

        /// <summary>
        /// Scalar获取数据
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public static object ExecuteScalar(string sql, object param)
        {
            using (IDbConnection con = new OracleConnection(connectionString))
            {
                return con.ExecuteScalar(sql, param);
            }
        }

        /// <summary>
        /// Scalar获取数据
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public static T ExecuteScalarForT(string sql, object param)
        {
            using (IDbConnection con = new OracleConnection(connectionString))
            {
                return con.ExecuteScalar<T>(sql, param);
            }
        }

        /// <summary>
        /// 带参数的存储过程
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public static List<T> ExecutePro(string proc, object param)
        {
            using (IDbConnection con = new OracleConnection(connectionString))
            {
                List<T> list = con.Query<T>(proc,
                    param,
                    null,
                    true,
                    null,
                    CommandType.StoredProcedure).ToList();
                return list;
            }
        }


        /// <summary>
        /// 事务1 - 全SQL
        /// </summary>
        /// <param name="sqlarr">多条SQL</param>
        /// <param name="param">param</param>
        /// <returns></returns>
        public static int ExecuteTransaction(string[] sqlarr)
        {
            using (IDbConnection con = new OracleConnection(connectionString))
            {
                using (var transaction = con.BeginTransaction())
                {
                    try
                    {
                        int result = 0;
                        foreach (var sql in sqlarr)
                        {
                            result += con.Execute(sql, null, transaction);
                        }

                        transaction.Commit();
                        return result;
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                        return 0;
                    }
                }
            }
        }

        /// <summary>
        /// 事务2 - 声明参数
        ///demo:
        ///dic.Add("Insert into Users values (@UserName, @Email, @Address)",
        ///        new { UserName = "jack", Email = "[email protected]", Address = "上海" });
        /// </summary>
        /// <param name="Key">多条SQL</param>
        /// <param name="Value">param</param>
        /// <returns></returns>
        public static int ExecuteTransaction(Dictionary<string, object> dic)
        {
            using (IDbConnection con = new OracleConnection(connectionString))
            {
                using (var transaction = con.BeginTransaction())
                {
                    try
                    {
                        int result = 0;
                        foreach (var sql in dic)
                        {
                            result += con.Execute(sql.Key, sql.Value, transaction);
                        }

                        transaction.Commit();
                        return result;
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                        return 0;
                    }
                }
            }
        }
    }

 

标签:封装,using,param,return,static,sql,OracleSQLHelper,Dapper,con
From: https://www.cnblogs.com/LowKeyCXY/p/17431910.html

相关文章

  • 用go封装一下封禁功能
    用go封装一下封禁功能本篇为用go设计开发一个自己的轻量级登录库/框架吧-秋玻-博客园(cnblogs.com)的封禁业务篇,会讲讲封禁业务的实现,给库/框架增加新的功能。源码:https://github.com/weloe/token-go思路封禁业务也是在一般项目中比较常见的业务。我们也将它封装在库中作......
  • GB28181-2022中的封装编码要求
    术语: GB28181的传输要求:   国标协议的封装和编码要求:注意国标GB28181只支持RTP+PS;尽管RTP内的内容可以是PS/TS/ES,但是国标协议传输的只是RTP+PS,PS封装的编码类型可以有多种; 国标码流RTP-PS内部的一些参数【PSM,PT等】:  如果不限制国标流,RTP内部可以是PS......
  • 方法的重载、构造器,封装、静态非静态方法
    静态非静态方法如果两个都是静态方法可以直接互相调用,否则无法调用非静态(无static关键字)方法如果方法为非静态,调用时无法直接用student.get();要先实例化一个对象在用.方法方法的重载多个方法可以重名,调用时会自动重载,检查方法名以及对应的参数判断具体使用的是哪一个方法......
  • 1688阿里巴巴中国站按关键字搜索抓取新品数据API接口展示示例(封装可高并发)(Java系列)
    ​一、电商平台上新的重要性 电商平台上新非常重要。 首先,持续的新品上线可以吸引更多的用户访问平台和留存用户的兴趣。新品可以激发用户想要知道更多、购买更多的欲望,从而提高用户的使用频率和转化率。此外,新品上线也可以使电商平台更具竞争力,吸引更多的品牌入驻并增强......
  • Vue3——基于tdesign封装一个通用的查询组件
    前言基于Vue3+TS+tdesign封装一个通用的查询组件;临时写的一个demo内容组件代码<template><t-formref="form":model="formData"inline><t-form-itemv-for="iteminformConfig":key="item.name":label="item.label&qu......
  • 直播app开发,基于van-uploader封装的文件上传图片压缩组件
    直播app开发,基于van-uploader封装的文件上传图片压缩组件1、调用<template>  <div>    <compress-uploaderv-model="fileList":compressSwitch="true":quality="0.5":maxCount="3"/>  </div></template> <......
  • Spring Boot 我随手封装了一个万能的 Excel 导出工具,传什么都能导出!
    前言如题,这个小玩意,就是不限制你查的是哪张表,用的是什么类。我直接一把梭,嘎嘎给你一顿导出。我知道,这是很多人都想过的,至少我就收到很多人问过我这个类似的问题。我也跟他们说了,但是他们就是不动手,其实真的很简单。不动手怎么办?我出手呗。不多说开搞。正文玩法很简单。......
  • 关于c#原生sql的封装
     //1将实体对象动态转换为原生sql语句(增,删,改,查),查暂时只有单表查询,多实体的动态生成暂时还没想出来usingMicrosoft.EntityFrameworkCore;usingMicrosoft.EntityFrameworkCore.Metadata.Internal;usingMicrosoft.Extensions.Hosting;usingMISSION.Entitys;usingMISSION......
  • vue3.0组件封装
    组件全局祖册1.建立公共文件夹my-ui2.index.js文件导出全局祖册组件的install方法3.main.js中impotindex.js导入install方法使用并useimportmyUifrom'./components/my-ui'createApp(App).use(myUi).mount('#app')......
  • Uni-app 封装 API 请求
    一、在文件夹API下创建api.jsconstBASE_URL="";//封装请求方法constrequest=(url,method,data)=>{ wx.showLoading({ title:'加载中'//数据请求前loading }) returnnewPromise((resolve,reject)=>{ wx.request({ url:BASE_URL+url,......