# ApexDapper **Repository Path**: swordsman-docker/apex-dapper ## Basic Information - **Project Name**: ApexDapper - **Description**: Apex.Dapper基于Mybatis风格的Dapper - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: https://gitee.com/swordsman-docker/apex-dapper.git - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 2 - **Created**: 2023-04-02 - **Last Updated**: 2025-05-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ApexDapper #### 介绍 - 1.Apex.Dapper基于Mybatis风格的半自动化ORM,实现代码与SQL语句的解耦。 - 2.只做功能拓展,不做修改,对于Dapper原生代码SqlMapper类不做任何改动,保留原生Dapper的使用。 - 3.因为业务需要,经常会使用到Oracle,所以内置了Oracle.ManagedDataAccess.dll,支持Oracle。 - 4.基于.Net Framework4.0开发,可以兼容绝大多数工程。 #### 环境配置 - 1.通过Nuget包管理器下载Apex.Dapper(目前只发布.Net Framework 4.0对应版本)。 - 2.创建表或者视图的实体类,继而创建Mapper文件夹和脚本内容XML文件,选中XML文件右键属性,将文件生成操作设置为嵌入的资源。 - 3.新建App.config配置文件,配置数据库链接字符串和Sql脚本文件路由(命名空间.文件名称.xml)。 #### 拓展API使用说明 ```cs // 获取数据库连接对象(Sql Server) private readonly static MapperExecutor mapperExecutor = new MapperExecutor( DapperAccess.GetConnection(ConfigurationManager.ConnectionStrings["hisdb"].ConnectionString), Assembly.GetExecutingAssembly().GetManifestResourceStream(ConfigurationManager.AppSettings["SqlScript"])); // 获取数据库连接对象(Oracle) [Obsolete] private readonly static MapperExecutor oracleMapperExecutor = new MapperExecutor( DapperAccess.GetOracleConnection(ConfigurationManager.ConnectionStrings["hisdbThird"].ConnectionString), Assembly.GetExecutingAssembly().GetManifestResourceStream(ConfigurationManager.AppSettings["SqlScript"])); // 查询(参数1:方法名,参数2:Sql参数对象[可选]) IEnumerable staffInfos = mapperExecutor.ExcuteQuery("GetUserById", new { StaffNo = "5103" }); ``` #### Mapper.xml文件说明 一个数据库连接对应一个Mapper脚本文件。 - 标签规范 - 查询:dapper/select/方法名 - 更新:dapper/other/方法名(这里的更新是广义上的数据更新,包括数据插入、数据变更、数据删除) ```xml insert into [haz].[StaffInfo](StaffNo, StaffName) values ``` #### 动态条件查询 - 仅适用于单表查询或者视图查询(基础SQL脚本必须是完整可执行的SQL语句) ```cs // 动态条件查询 IEnumerable staffInfos = mapperExecutor.ExecuteQueryDynamic("GetUserById", new { DepartmentId = "51336", TitleName = "主任中医师" }); ```