[LINQ2Dapper]最完整Dapper To Linq框架(二)---动态化查询
目录
- [LINQ2Dapper]最完整Dapper To Linq框架(一)---基础查询
- [LINQ2Dapper]最完整Dapper To Linq框架(二)---动态化查询
- [LINQ2Dapper]最完整Dapper To Linq框架(三)---实体类关系映射
- [LINQ2Dapper]最完整Dapper To Linq框架(四)---Linq和SQL并行使用
- [LINQ2Dapper]最完整Dapper To Linq框架(五)---查看Linq实际执行的SQL
- [LINQ2Dapper]最完整Dapper To Linq框架(六)---多表联合与匿名类型返回
- [LINQ2Dapper]最完整Dapper To Linq框架(七)---仓储模式
- [LINQ2Dapper]最完整Dapper To Linq框架(八)---导航属性
配合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));

二.后端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框架(二)---动态化查询的更多相关文章
- [LINQ2Dapper]最完整Dapper To Linq框架(一)---基础查询
此例子是使用LINQ2Dapper封装,效率优于EntityFramwork,并且支持.NetFramework和.NetCore框架,只依赖于Dapper 支持.net framework4.5.1 ...
- [LINQ2Dapper]最完整Dapper To Linq框架(七)---仓储模式
目录 [LINQ2Dapper]最完整Dapper To Linq框架(一)---基础查询 [LINQ2Dapper]最完整Dapper To Linq框架(二)---动态化查询 [LINQ2Dapp ...
- [LINQ2Dapper]最完整Dapper To Linq框架(三)---实体类关系映射
此特性需要安装Kogel.Dapper.Mssql或者Oracle 3.06及以上版本,实体类层需要安装Kogel.Dapper.Extension 3.06及以上版本 目录 [LINQ2Dapper ...
- [LINQ2Dapper]最完整Dapper To Linq框架(四)---Linq和SQL并行使用
目录 [LINQ2Dapper]最完整Dapper To Linq框架(一)---基础查询 [LINQ2Dapper]最完整Dapper To Linq框架(二)---动态化查询 [LINQ2Dapp ...
- [LINQ2Dapper]最完整Dapper To Linq框架(五)---查看Linq实际执行的SQL
此例子是使用LINQ2Dapper封装,效率优于EntityFramwork,并且支持.NetFramework和.NetCore框架,只依赖于Dapper支持.net framework4.6.1及 ...
- [LINQ2Dapper]最完整Dapper To Linq框架(六)---多表联合与匿名类型返回
目录 [LINQ2Dapper]最完整Dapper To Linq框架(一)---基础查询 [LINQ2Dapper]最完整Dapper To Linq框架(二)---动态化查询 [LINQ2Dapp ...
- [LINQ2Dapper]最完整Dapper To Linq框架(八)---导航属性
目录 [LINQ2Dapper]最完整Dapper To Linq框架(一)---基础查询 [LINQ2Dapper]最完整Dapper To Linq框架(二)---动态化查询 [LINQ2Dapp ...
- EntityFramework、Dapper vs 草根框架性能大比拼,数据库访问哪家强?
扯淡 当前市面上 ORM 很多,有跑车型的,如 Dapper,有中规中矩型的,如 Mybatis.Net,也有重量型的,如 EntityFramework 和 NHibernate,还有一些出自草根之 ...
- EntityFramework、Dapper vs 草根框架性能
EntityFramework.Dapper vs 草根框架性能 扯淡 当前市面上 ORM 很多,有跑车型的,如 Dapper,有中规中矩型的,如 Mybatis.Net,也有重量型的,如 Entit ...
随机推荐
- hihocoder 数论二·Eular质数筛法
数论二·Eular质数筛法 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho:小Hi,上次我学会了如何检测一个数是否是质数.于是我又有了一个新的问题,我如何去快速得 ...
- Spring Security 入门 (二)
我们在篇(一)中已经谈到了默认的登录页面以及默认的登录账号和密码. 在这一篇中我们将自己定义登录页面及账号密码. 我们先从简单的开始吧:设置自定义的账号和密码(并非从数据库读取),虽然意义不大. 上一 ...
- MySQL的远程连接问题 错误1130
解决办法:将localhost改成%. 在远程主机上--> 登陆mysql服务执行如下代码: mysql -u root -p mysql>use mysql; mysql>upda ...
- boost::multi_index 多索引容器
#include "stdafx.h" #include <string> #include <boost/multi_index_container.hpp&g ...
- 使用FastReport报表工具生成标签打印文档
在我们实际开发报表的时候,我们需要按一定的业务规则组织好报表的模板设计,让报表尽可能的贴近实际的需求,在之前的随笔中<使用FastReport报表工具生成报表PDF文档>介绍了FastRe ...
- Kerberos kinit crontab定时任务不生效的问题解决
问题 有这样一个定时任务 1 */12 * * * kinit -kt xxxxxx.keytab principle 这样写每天 12点,执行一次. 但是服务器的应用程序报错: GSS initia ...
- Kafka Manager安装部署及使用
为了简化开发者和服务工程师维护Kafka集群的工作,yahoo构建了一个叫做Kafka管理器的基于Web工具,叫做 Kafka Manager.本文对其进行部署配置,并安装配置kafkatool对k ...
- day08整理(周总结\列表\字典内置方法)
一.周总结 一 计算机基础之编程 1.什么是编程语言 编程是人与计算机交流的介质 2.什么是编程 通过编程语言写一堆文件 3,为什么编程 取代劳动力,帮人类干活 二 计算机组成 1.CPU 控制器 控 ...
- Kafka集群的安装和部署
一.Kafka的下载与解压 http://kafka.apache.org/downloads.html下载kafka_2.11-1.1.1.tgz.gz并解压到/home/jun下 [jun@mas ...
- unity text实现鼠标光标
由于项目需求,需要在text上实现鼠标的cursor,并且随着点击位置cursor移动.实现方法: 1)新建一个光标的prefab(简单为之,直接在image中添加一个竖线spirte),增加脚本控制 ...