Dapper中使用字符串作为动态参数查询时,结果不是预期的问题

1、如下图,c.industryId作为string类型当作参数传递,解析时会加单引号,即:”c.industryId“,

生成的查询语句就会变成

-- 这里把'c.IndustryGroup' 当成实际的值所以会查询不出数据

select b.`Name`,COUNT(c.Id) Num
                           from base_industry_dist b
                           LEFT JOIN base_companyinfo c on b.Id='c.IndustryGroup'
                           Where b.Deep=0 GROUP BY b.Id ORDER BY num

可修改成如下:

--使用$语法糖的写法可读性高,代码简洁

        /// <summary>/// 获取产业所属企业数量统计/// </summary>/// <param name="id"></param>/// <param name="deep"></param>/// <returns></returns>public async Task<List<IndustryCompanyStatistictQto>> GetIndustryCompanyStatistictsAsync(Guid? id, int deep){var sqlStr = @$"select b.`Name`,COUNT(c.Id) Num from base_industry_dist b ";var whereStr = @" Where b.Deep=@deep";var groupByStr = @" GROUP BY b.Id ORDER BY Num desc";var industryId = "c.IndustryGroup";var sqlPredicates = new List<string>();var queryParam = new DynamicParameters();queryParam.Add(nameof(deep), deep);if (deep == 1){industryId = "c.IndustrySubGroup";sqlPredicates.Add(" b.ParentId=@parentId");queryParam.Add("parentId", id.Value);}else if (deep == 2){industryId = "c.IndustrySpecific";sqlPredicates.Add(" b.ParentId=@parentId");queryParam.Add("parentId", id.Value);}else{queryParam.Add(nameof(industryId), industryId);}var leftJoinStr = @$" LEFT JOIN base_companyinfo c on b.Id={industryId}";sqlStr += leftJoinStr;sqlStr += whereStr;if (sqlPredicates.Any()){var sqlPredicatesStr = sqlPredicates.Aggregate((p, n) => $"{p} and {n}");sqlStr = @$"{sqlStr} and {sqlPredicatesStr}";}sqlStr += groupByStr;var connect = await GetDbConnectionAsync();var dbTransaction = await GetDbTransactionAsync();//var tt = (await connect.QueryAsync(sqlStr, queryParam, dbTransaction)).ToList();return (await connect.QueryAsync<IndustryCompanyStatistictQto>(sqlStr, queryParam, dbTransaction)).ToList();}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/115728.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爬虫模拟用户登录

使用爬虫模拟用户登录过程一般包括以下几个步骤&#xff1a; 导入所需的库&#xff1a;一般需要导入requests和BeautifulSoup库来发送HTTP请求和解析HTML。 import requestsfrom bs4 import BeautifulSoup 发送GET请求获取登录页面&#xff1a;使用requests库发送GET请求&#…

Spring Boot OAuth 2.0整合详解

目录 一、Spring Boot 2.x 示例 1、初始化设置 2、设置重定向URI 3、配置 application.yml 4、启动应用程序 二、Spring Boot 2.x 属性映射 二、CommonOAuth2Provider 三、配置自定义提供者&#xff08;Provider&#xff09;属性 四、覆盖 Spring Boot 2.x 的自动配置…

数学建模——最大流问题(配合例子说明)

目录 一、最大流有关的概念 例1 1、容量网络的定义 2、符号设置 3、建立模型 3.1 每条边的容量限制 3.2 平衡条件 3.3 网络的总流量 4、网络最大流数学模型 5、计算 二、最小费用流 例2 【符号说明】 【建立模型】 &#xff08;1&#xff09;各条边的流量限制 &a…

Java赋值运算符(=)

赋值运算符是指为变量或常量指定数值的符号。赋值运算符的符号为“”&#xff0c;它是双目运算符&#xff0c;左边的操作数必须是变量&#xff0c;不能是常量或表达式。 其语法格式如下所示&#xff1a; 变量名称表达式内容 在 Java 语言中&#xff0c;“变量名称”和“表达式…

执行autoreconf -fi的过程报错

https://xie.infoq.cn/article/6bba9dd34fb49b7adacb4aacd https://github.com/curl/curl/blob/master/docs/HTTP3.md#quiche-version curl配置quiche的过程中报错&#xff0c; configure:7902: error: possibly undefined macro: AC_LIBTOOL_WIN32_DLLIf this token and ot…

Linux常用的调试工具

在开发和调试Linux的过程中&#xff0c;经常会遇到各种各样的问题&#xff0c;如程序崩溃、性能低下、内存泄漏等。这时候&#xff0c;调试就显得尤为重要。调试技巧和工具能够帮助开发人员快速定位问题并快速解决。在本文中&#xff0c;我们将介绍一些常用的Linux调试技巧和工…

acwing第 126 场周赛 (扩展字符串)

5281. 扩展字符串 一、题目要求 某字符串序列 s0,s1,s2,… 的生成规律如下&#xff1a; s0 DKER EPH VOS GOLNJ ER RKH HNG OI RKH UOPMGB CPH VOS FSQVB DLMM VOS QETH SQBsnDKER EPH VOS GOLNJ UKLMH QHNGLNJ Asn−1AB CPH VOS FSQVB DLMM VOS QHNG Asn−1AB&#xff0c;其…

MyBatis源码基础-常用类-Configuration

Configuration Configuration类a.java配置b.构建配置类 Configuration类 a.java配置 针对上述的xml配置&#xff0c;可以使用如下的java代码替换&#xff1a; Test public void testConfiguration() {Configuration configuration new Configuration();// 配置propertiesPr…

C++中作为类实例的对象

C中作为类实例的对象 类相当于蓝图&#xff0c;仅声明类并不会对程序的执行产生影响。在程序执行阶段&#xff0c;对象是类的化身。要使用类的功能&#xff0c;通常需要创建其实例—对象&#xff0c;并通过对象访问成员方法和属性。 在C中。类的对象就是该类的某一特定实体&a…

canvas绘制动态视频并且在视频上加上自定义logo

实现的效果&#xff1a;可以在画布上播放动态视频&#xff0c;并且加上自定义的图片logo放在视频的右下角 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthd…

找不到conda可执行文件:解决方法

1.在新版本的pycharm出现的问题如下&#xff1a; 2.解决方法: 2.1 将anaconda\Scripts\conda.exe选中 2.2选择自己的anconda自己的环境&#xff0c;之后就可以正常创建conda环境

自然语言处理---Transformer机制详解之BERT GPT ELMo模型的对比

1 BERT、GPT、ELMo的不同点 关于特征提取器: ELMo采用两部分双层双向LSTM进行特征提取, 然后再进行特征拼接来融合语义信息.GPT和BERT采用Transformer进行特征提取.很多NLP任务表明Transformer的特征提取能力强于LSTM, 对于ELMo而言, 采用1层静态token embedding 2层LSTM, 提取…

IT行业就业方向:探索未来的职业机会

引言&#xff1a; 随着信息技术的飞速发展&#xff0c;IT行业已经成为了当前最具活力和发展潜力的行业之一。在这个充满机遇和挑战的时代&#xff0c;选择一个好的就业方向对于个人的职业发展至关重要。本文将探讨IT行业中哪些方向具有更好的就业前景&#xff0c;并提供一些建…

云原生之深入解析如何使用Vcluster Kubernetes加速开发效率

一、背景 为什么一个已经在使用 Kubernetes 本身方面已经很挣扎的开发人员还要处理虚拟集群呢&#xff1f;答案可能会让您感到惊讶&#xff0c;但我相信虚拟集群实际上比单独的物理集群更容易处理&#xff0c;并且与本地 k3d、KinD 或 minikube 部署的集群相比具有相当多的优势…

node教程(二)

文章目录 1.模块化1.1模块化介绍1.2模块化初体验1.3模块暴露数据(&#x1f53a;)1.4引入&#xff08;导入&#xff09;模块 1.模块化 1.1模块化介绍 ⭐什么是模块化与模块&#xff1f; 将一个复杂的程序文件依据一定规则&#xff08;规范&#xff09;拆分成多个文件的过程称之…

python 之numpy 之随机生成数

文章目录 1. **生成均匀分布的随机浮点数**&#xff1a;2. **生成随机整数**&#xff1a;3. **生成标准正态分布随机数**&#xff1a;4. **生成正态分布随机数**&#xff1a;5. **生成均匀分布的随机浮点数**&#xff1a;6. **生成随机抽样**&#xff1a;7. **设置随机数种子**…

Axi_Lite接口的IP核与地址与缓冲与AxiGP0

AXI Interconnect互连内核将一个或多个 AXI 内存映射主设备连接到一个或多个内存映射从设备。 AXI_GP 接口 AXI_GP 接口是直接连接主机互联和从机互联的端口的。 AXI_HP 接口具有一个 1kB 的数据 FIFO 来做缓冲 [4]&#xff0c;但是 AXI_GP 接口与它不同&#xff0c;没…

24东北大学计算机计划招生数据

2.结语 24的保研名额很多&#xff0c;统考名额就这些&#xff0c;大家根据自己的情况做出选择 东大计算机不好考&#xff0c;但是不代表考不上&#xff01;加油 3.数据来源于官网 官网链接

从传统云架构到云原生生态体系架构的演进

文章目录 概述传统云架构&#xff1a;虚拟化的时代云原生生态体系架构的兴起容器化和微服务架构自动化和自动伸缩基础设施即代码云原生存储和数据库 云原生的影响结语 概述 随着科技的不断发展&#xff0c;云计算领域也经历了巨大的变革。这一演进的核心焦点是从传统云架构过渡…

【Java集合类面试七】、 JDK7和JDK8中的HashMap有什么区别?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;JDK7和JDK8中的HashMap有…