[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="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值类型
16String
6DateTime
  

 

如果是多表需要配置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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值