目录

配合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=""
/>
<!-- 模糊查询-->
</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=""
data-table="users" data-type="" />
<!-- data-operator="" 是大于等于 data-type="" 是时间格式 -->
</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 = ; i < inputArr.length; i++) {
var item = $(inputArr[i]);
//生成一个唯一键
var key = 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g,
function(c) {
var r = Math.random() * | ,
v = c == 'x' ? r: (r & 0x3 | 0x8);
return v.toString();
}); //值 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-table,data-table对应表名,需要在程序启动时注册

EntityCache.Register(typeof(T));

  1. 二.后端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. [LINQ2Dapper]最完整Dapper To Linq框架(一)---基础查询

    此例子是使用LINQ2Dapper封装,效率优于EntityFramwork,并且支持.NetFramework和.NetCore框架,只依赖于Dapper 支持.net framework4.5.1 ...

  2. [LINQ2Dapper]最完整Dapper To Linq框架(七)---仓储模式

    目录 [LINQ2Dapper]最完整Dapper To Linq框架(一)---基础查询 [LINQ2Dapper]最完整Dapper To Linq框架(二)---动态化查询 [LINQ2Dapp ...

  3. [LINQ2Dapper]最完整Dapper To Linq框架(三)---实体类关系映射

    此特性需要安装Kogel.Dapper.Mssql或者Oracle 3.06及以上版本,实体类层需要安装Kogel.Dapper.Extension 3.06及以上版本 目录 [LINQ2Dapper ...

  4. [LINQ2Dapper]最完整Dapper To Linq框架(四)---Linq和SQL并行使用

    目录 [LINQ2Dapper]最完整Dapper To Linq框架(一)---基础查询 [LINQ2Dapper]最完整Dapper To Linq框架(二)---动态化查询 [LINQ2Dapp ...

  5. [LINQ2Dapper]最完整Dapper To Linq框架(五)---查看Linq实际执行的SQL

    此例子是使用LINQ2Dapper封装,效率优于EntityFramwork,并且支持.NetFramework和.NetCore框架,只依赖于Dapper支持.net framework4.6.1及 ...

  6. [LINQ2Dapper]最完整Dapper To Linq框架(六)---多表联合与匿名类型返回

    目录 [LINQ2Dapper]最完整Dapper To Linq框架(一)---基础查询 [LINQ2Dapper]最完整Dapper To Linq框架(二)---动态化查询 [LINQ2Dapp ...

  7. [LINQ2Dapper]最完整Dapper To Linq框架(八)---导航属性

    目录 [LINQ2Dapper]最完整Dapper To Linq框架(一)---基础查询 [LINQ2Dapper]最完整Dapper To Linq框架(二)---动态化查询 [LINQ2Dapp ...

  8. EntityFramework、Dapper vs 草根框架性能大比拼,数据库访问哪家强?

    扯淡 当前市面上 ORM 很多,有跑车型的,如 Dapper,有中规中矩型的,如 Mybatis.Net,也有重量型的,如 EntityFramework 和 NHibernate,还有一些出自草根之 ...

  9. EntityFramework、Dapper vs 草根框架性能

    EntityFramework.Dapper vs 草根框架性能 扯淡 当前市面上 ORM 很多,有跑车型的,如 Dapper,有中规中矩型的,如 Mybatis.Net,也有重量型的,如 Entit ...

随机推荐

  1. 关于人工智能和python

    人工智能的话题在近几年可谓是相当火热,前几天看快本时其中有一个环节就是关于人工智能的,智能家电.智能机器人.智能工具等等,在我的印象里,提到人工智能就会出现 Python,然后我便在网上查找了相关信息 ...

  2. 安装高可用Hadoop生态 (一 ) 准备环境

    为了学习Hadoop生态的部署和调优技术,在笔记本上的3台虚拟机部署Hadoop集群环境,要求保证HA,即主要服务没有单点故障,能够执行最基本功能,完成小内存模式的参数调整. 1.    准备环境 1 ...

  3. Python_三元运算与lambda表达式

    [是什么] 三元运算是if...else...的简化版,lambda表达式是函数的简化版 三元运算(三目运算) # 判断两个数中的较大者 fun(a1,a2): return a1 if a1> ...

  4. [JZOJ5456]【NOIP2017提高A组冲刺11.6】奇怪的队列

    Description nodgd的粉丝太多了,每天都会有很多人排队要签名.今天有

  5. SVN工具常用功能总结

    使用SVN作为版本管理工具,可以使用VisualSVN Server+TortoiseSVN搭建SVN版本控制系统,组长安装VisualSVN Server,组员安装TortoiseSVN. Tort ...

  6. 日志::spdlog

    https://github.com/gabime/spdlog git clone https://github.com/gabime/spdlog.git cd spdlog && ...

  7. POJ 1035 Spell checker(串)

    题目网址:http://poj.org/problem?id=1035 思路: 看到题目第一反应是用LCS ——最长公共子序列 来求解.因为给的字典比较多,最多有1w个,而LCS的算法时间复杂度是O( ...

  8. SpringBoot生命周期管理之停掉应用服务几种方法

    前言 在生产环境下管理Spring Boot应用的生命周期非常重要.Spring容器通过ApplicationContext处理应用服务的所有的beans的创建.初始化.销毁. 本文着重于生命周期中的 ...

  9. Java Web 学习(1) —— Servlet

    Java Web 学习(1) —— Servlet 一. 什么是 Servlet Java Servlet 技术是Java体系中用于开发 Web 应用的底层技术. Servlet 是运行在 Servl ...

  10. 如何利用C# Roslyn编译器写一个简单的代码提示/错误检查?

    OK, 废话不多说,这些天在写C#代码时突然对于IDE提示有了一些想法,之前也有了解过,不过并没有深入. 先看个截图: 一段再简单不过的代码了,大家注意看到 count 字段下面的绿色波浪线了吗,我们 ...