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

news2024/11/18 11:47:56

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.coloradmin.cn/o/1124918.html

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

相关文章

驱动作业10.23

现象 test.c #include <stdlib.h> #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/ioctl.h> #include <fcntl.h> #include <unistd.h> #include <string.h> #include "head.h"in…

潮玩宇宙源码开发:开启全新的数字潮流时代

随着数字技术的飞速发展和人们对于娱乐需求的不断提升&#xff0c;潮玩宇宙源码开发逐渐成为了新的热门话题。潮玩宇宙是一个集潮流、艺术、科技于一体的数字娱乐新领域&#xff0c;通过将虚拟现实、增强现实等技术融入传统玩具设计中&#xff0c;为玩家们带来了全新的互动体验…

从零开始 Spring Cloud 15:多级缓存

从零开始 Spring Cloud 15&#xff1a;多级缓存 多级缓存架构 传统的缓存使用 Redis&#xff0c;大致架构如下&#xff1a; 这个架构存在一些问题&#xff1a; 请求要经过Tomcat处理&#xff0c;Tomcat的性能成为整个系统的瓶颈 Redis缓存失效时&#xff0c;会对数据库产生冲…

可在耳塞上记录大脑活动的3D打印传感器,未来或可用于诊断神经性疾病

原创 | 文 BFT机器人 加州大学圣地亚哥分校的研究人员探寻到一种方法&#xff0c;可以将日常耳塞变成可以记录大脑内部电活动的高科技设备。通过3D丝网打印的柔性传感器不仅能够检测来自大脑的电生理活动&#xff0c;还能收集人体的汗液乳酸——它是身体在运动和正常代谢活动过…

Risc0:使用Continunations来证明任意EVM交易

1. 引言 RISC Zero&#xff0c;设想了一个基于零知识证明的无限计算的未来。 2023年5月发布了RISC Zero zkVM v0.15版本&#xff0c;其中包含了一种重要feature&#xff1a; continuations。 在RISC Zero zkVM中&#xff0c;continuations为一种机制&#xff1a; 用于将大…

Apollo与TypeScript:强大类型检查在前端开发中的应用

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 「推荐专栏」&#xff1a; ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄&#xff0c;vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…

如何制作.exe免安装绿色单文件程序,将源代码打包成可独立运行的exe文件

环境: rustdesk编译文件和文件夹 文件程序制作工具 问题描述: 如何制作.exe免安装绿色单文件程序,将源代码打包成可独立运行的exe文件,像官网那种呢? 将下面编译好的rustdesk文件夹制作成一个.exe免安装绿色单文件程序,点击exe就可以运行 在github上找了半天也没有…

大模型的实践应用3-大模型的基础架构Transformer模型,掌握Transformer就掌握了大模型的灵魂骨架

大家好,我是微学AI,今天给大家介绍一下大模型的实践应用3-大模型的基础架构Transformer模型,掌握Transformer就掌握了大模型的灵魂骨架。Transformer是一种基于自注意力机制的深度学习模型,由Vaswani等人在2017年的论文《Attention is All You Need》中提出。它最初被设计用…

【Java集合类面试十一】、HashMap为什么用红黑树而不用B树?

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

第四章 路由基础

目录 4.1 路由器概述 4.1.1 路由器定义 4.1.2 路由器工作原理 4.1.3 路由表的生成方式 &#xff08;1&#xff09;直连路由 &#xff08;2&#xff09;静态路由 &#xff08;3&#xff09;动态路由 4.1.4 路由器的接口 &#xff08;1&#xff09;配置接口 &#xff0…

Java毕业设计 SpringBoot 美食推荐系统 美食分享系统

Java毕业设计 SpringBoot 美食推荐系统 美食分享系统 SpringBoot 美食推荐系统 功能介绍 首页 图片轮播 登录注册 美食信息 搜索 美食分享 美食教程 美食排行榜 个人中心 更新个人资料 我的分享 我的收藏 在线咨询 后台管理 登录 个人中心 修改密码 用户管理 美食信息管理 美…

Spring+spring mvc+mybatis整合的框架

Spring是一个轻量级的企业级应用开发框架&#xff0c;于2004年由Rod Johnson发布了1.0版本&#xff0c;经过多年的更新迭代&#xff0c;已经逐渐成为Java开源世界的第一框架&#xff0c;Spring框架号称Java EE应用的一站式解决方案&#xff0c;与各个优秀的MVC框架如SpringMVC、…

经典卷积神经网络 - VGG

使用块的网络 - VGG。 使用多个 3 3 3\times 3 33的要比使用少个 5 5 5\times 5 55的效果要好。 VGG全称是Visual Geometry Group&#xff0c;因为是由Oxford的Visual Geometry Group提出的。AlexNet问世之后&#xff0c;很多学者通过改进AlexNet的网络结构来提高自己的准确…

day03_pandas_demo

文章目录 pandas介绍为什么使用pandasDataFrameDataFrame属性DataFrame的索引修改行列的索引值重设索引值以某列设置新索引 MultiIndexSerias索引操作直接索引按名字索引按数值索引 赋值操作排序对内容排序按索引排序 DataFrame的运算算术运算逻辑运算逻辑运算符号 < > |…

uni-app 小宠物 - 会说话的小鸟

在 template 中 <view class"container"><view class"external-shape"><view class"face-box"><view class"eye-box eye-left"><view class"eyeball-box eyeball-left"><span class"…

搭建nexus私服部署项目

目录 1、前言 2、添加release和snapshot版本库 3、配置idea中的Maven设置 4、配置maven的settings.xml文件 5、项目中使用maven部署 1、前言 前文主要讲述了maven私服nexus的搭建&#xff1a;maven私服nexus搭建mybatisplus使用-CSDN博客 本文将继续讲述搭建nexus私服有…

img标签如何将<svg></svg>数据渲染出来

要将 ​​<svg></svg>​​​ 数据插入到 ​​<img>​​ 标签中&#xff0c;你可以使用以下两种方法&#xff1a; 方法一&#xff1a;使用 Data URL 你可以将 ​​<svg></svg>​​ 数据编码为 Data URL&#xff0c;并将其作为 ​​<img>​​…

“游蛇”黑产团伙专题分析报告

目录 ​编辑 01概览 02黑产团伙攻击手段 2.1 恶意程序传播 双击类恶意程序 跳图类恶意程序 损坏类恶意程序 2.2 恶意程序执行 可信站点 黑产团伙基础设施 03黑产团伙的几种变现方式 3.1 伪装身份后实施诈骗 3.2 恶意拉群后实施诈骗 04防护、排查与处置 01概览 “…

手写SVG图片

有时候QT中可能会需要一些简单的SVG图片,但是网上的质量参差不齐,想要满意的SVG图片,我们可以尝试直接手写的方法. 新建文本文档,将以下代码复制进去,修改后缀名为.svg,保存 <?xml version"1.0" encoding"utf-8"?> <svg xmlns"http://www…

QTday06(人脸识别项目前置知识)

qt版本5.4.0&#xff1a;旧版本的qt&#xff0c;为啥要用旧版本的我也不知道 实现结果&#xff1a; 调用系统摄像头&#xff0c;用红框框住画面中的人头 代码&#xff1a; pro&#xff1a; #------------------------------------------------- # # Project created by QtC…