目录

  • [LINQ2Dapper]最完整Dapper To Linq框架(一)---基础查询
  • [LINQ2Dapper]最完整Dapper To Linq框架(二)---动态化查询
  • [LINQ2Dapper]最完整Dapper To Linq框架(三)---实体类关系映射
  • [LINQ2Dapper]最完整Dapper To Linq框架(四)---Linq和SQL并行使用
  • [LINQ2Dapper]最完整Dapper To Linq框架(五)---查看Linq实际执行的SQL

配合js实现动态化查询

不需要写任何if来判断参数拼接SQL,简便效率

一.前端

<form id="search" class="form-horizontal" role="form"><div class="form-group col-sm-6 col-md-6"><label title="标题" class="control-label col-sm-3">用户名称</label><div class="col-sm-9"><input class="form-control" type="text" name="name" data-operator="6" /><!--6  模糊查询--></div></div><div class="form-group col-sm-6 col-md-6"><label title="创建时间" class="control-label col-sm-3">创建时间</label><div class="col-sm-9"><input class="form-control date" type="text" name="createDate" data-operator="16" data-table="users" data-type="6" /><!--data-operator="16"  是大于等于data-type="6"  是时间格式--></div></div><div class="form-group col-sm-6 col-md-6 operating"><a class="btn btn-primary" href="javascript:void(0)" onclick="users.init()">查询</a></div></form>

然后使用$("#search").serializeQuery();获取动态化参数对象

serializeQuery()方法的代码实现

//生成动态表条件
$.fn.serializeQuery = function () {var dynamicWhere = {};var inputArr = $(this).find("input");for (var i = 0; i < inputArr.length; i++) {var item = $(inputArr[i]);//生成一个唯一键var key = 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) {var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);return v.toString(16);});//值var value ={Table: item.attr("data-table"),//查询的表(默认为后台设置)Field: item.attr("name"),//字段名(必填)Operators: item.attr("data-operator"),//运算符(默认为13,Equal)Value: item.val(),//值ValueType: item.attr("data-type"),//值类型(默认为16,string)};dynamicWhere[key] = value;}return dynamicWhere;
}

更多配置符

data-operator 操作符
13 等于(Equal)
16 大于等于(>=)
21 小于等于(<=)
6 模糊查询(Contains)
   
data-type 值类型
16 String
6 DateTime
   

如果是多表需要配置data-table,data-table对应表名,需要在程序启动时注册

EntityCache.Register(typeof(T));

二.后端cs代码

  /// <param name="dynamicWhere">动态化参数对象</param>public JsonResult Query(Dictionary<string, DynamicTree> dynamicWhere = null){using (var conn = new SqlConnection("数据库连接字符串")){var result = conn.QuerySet<users>().Where(dynamicWhere).ToList();return result ;}}

完整Demo可以去Github上下载:

https://github.com/a935368322/Kogel.Dapper.Test

如有问题也可以加QQ群讨论:

技术群 710217654

框架开源,可以加群下载源码

[LINQ2Dapper]最完整Dapper To Linq框架(二)---动态化查询相关推荐

  1. Java开源 J2EE框架(二)

    Java开源 J2EE框架(二) 2007-01-06 12:34 Jofti [Java开源 其它开源项目] Jofti可对在缓存层中(支持EHCache,JBossCache和OSCache)的对 ...

  2. .NET深入解析LINQ框架(一:LINQ优雅的前奏)

    阅读目录: 1.LINQ简述 2.LINQ优雅前奏的音符 2.1.隐式类型 (由编辑器自动根据表达式推断出对象的最终类型) 2.2.对象初始化器 (简化了对象的创建及初始化的过程) 2.3.Lambd ...

  3. .NET深入解析LINQ框架1

    1.LINQ简述 2.LINQ优雅前奏的音符 2.1.隐式类型 (由编辑器自动根据表达式推断出对象的最终类型) 2.2.对象初始化器 (简化了对象的创建及初始化的过程) 2.3.Lambda表达式 ( ...

  4. .NET深入解析LINQ框架(一:LINQ优雅的前奏)[转载]

    .NET深入解析LINQ框架(一:LINQ优雅的前奏) 阅读目录: 1.LINQ简述 2.LINQ优雅前奏的音符 2.1.隐式类型 (由编辑器自动根据表达式推断出对象的最终类型) 2.2.对象初始化器 ...

  5. (精华)2020年9月10日 LINQ框架 手写LINQ框架(一:LINQ的由来)

    1.LINQ简述 LINQ简称语言集成查询,设计的目的是为了解决在.NET平台上进行统一的数据查询. 微软最初的设计目的是为了解决对象/关系映射的解决方案,通过简单的使用类似T-SQL的语法进行数据实 ...

  6. Spring框架(二)

    Spring框架(二) 一.控制反转IOC和依赖注入DI 控制反转和依赖注入是对同一件事情的不同描述,从某个方面讲,就是它们描述的角度不同.控制反转是说不需要程序员管理和控制bean,是解耦的目的,而 ...

  7. LINQ教程二:LINQ操作语法

    LINQ查询时有两种语法可供选择:查询表达式语法(Query Expression)和方法语法(Fluent Syntax). 一.查询表达式语法 查询表达式语法是一种更接近SQL语法的查询方式. L ...

  8. atitit. groupby linq的实现(1)-----linq框架选型 java .net php

    atitit.  groupby linq的实现(1)-----linq框架选型 java .net php 实现方式有如下 1. Dsl/ Java8 Streams AP ,对象化的查询api , ...

  9. 一个完整的Windows程序框架

    前面我们演示了带界面的Windows程序,但那仅仅是一个弹窗,调用MessageBox函数就可以实现,不是一个真正意义上的窗口.我们通常所说的窗口包含最大化.最小化.关闭按钮,也包含菜单.单选框.图像 ...

最新文章

  1. php偶尔500,python – 偶尔500错误
  2. 爬虫之requests模块超时参数timeout的使用
  3. Unity创建登录页面(2)
  4. 全国农商互联暨精准扶贫产销对接 对话农民丰收节交易会
  5. 最小生成树(普里姆算法【Prim】与克鲁斯卡尔算法【Kruskal】)
  6. Matlb中break 和continue 语句
  7. Https原理及流程
  8. .Net Core with 微服务 - 架构图
  9. 计算机专业去荷兰还是瑞典,给申请计算机专业的同学几点建议
  10. echart单击后获取横坐标值_Excel综合应用(1): 批量打印格式化后的表格
  11. PDE14 heat equation intuition
  12. 《卸甲笔记》-PostgreSQL和Oracle的SQL差异分析之三:rownum和聚合函数
  13. 不是所有的U盘都能作为启动盘
  14. 容器技术Docker K8s 18 容器服务ACK基础与进阶-容器网络管理
  15. latex字母/数字双线字体
  16. iweboffice之word——功能简介
  17. 新建linux efi分区,EFI系统分区是什么?单独创建EFI分区的图文教程
  18. 【电子电路】RS485收发器两种典型电路
  19. 手动下载Windows Defender离线更新包
  20. 十大企业级Linux服务器安全防护要点

热门文章

  1. 【北邮果园微处理器设计】gpio.c 应用解读(附gpio.c源码)
  2. 人参皂苷rg3多少钱?为什么人参皂苷的价格昂贵?原因在此
  3. 小小黑客之路(一)——端口扫描器
  4. 判断日期是月末java_判断一个日期是否为月末 | 学步园
  5. 在手机中怎样将PDF转换成TXT
  6. 和德天老师学习如果把系统目录文件名保存到外部xlsx文件(保存文件--2小节)
  7. hbuilder与php链接,教程|夜神模拟器与HBuilder连接的方法
  8. 计算机专业毕业论文摘要,计算机科学与技术专业论文摘要怎么写 计算机科学与技术专业论文摘要范文参考...
  9. oracle 触发器性能优化,Oracle设计开发阶段的性能优化策略
  10. 神经网络模型结果怎么看,图像识别神经网络模型