通用查询用途
一般我们Grid控件,会有很多条件传给后台,如果每个条件都写一个逻辑的话,那么工作量将非常大,所以通用查询功能是每个软件必备的,
SqlSugar将通用查询封装到支持了树型条件,并且支持所有常用的操作,用SqlSugar或者不用SqlSugar的都可参参考一下
1、简单多条件多动参数
创建数据库对象
//创建数据库对象 SqlSugarClient
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = "Server=.xxxxx",//连接符字串
DbType = DbType.SqlServer, //数据库类型
IsAutoCloseConnection = true //不设成true要手动close
});
前台传的JSON格式 [{},{},{}]
1
2
3
4
[
{
"FieldName"
:
"id"
,
"ConditionalType"
:
"0"
,
"FieldValue"
:
"1"
},
{
"FieldName"
:
"name"
,
"ConditionalType"
:
"0"
,
"FieldValue"
:
"jack"
}
]
后台代码
1
2
3
4
5
6
7
8
9
10
//手动构造
var
conModels =
new
List<IConditionalModel>();
conModels.Add(
new
ConditionalModel{ FieldName =
"id"
,ConditionalType=ConditionalType.Equal,FieldValue=
"1"
});
conModels.Add(
new
ConditionalModel{ FieldName =
"name"
,ConditionalType=ConditionalType.Equal,FieldValue=
"jack"
});
//5.0.5.1 Json直接序列化
var
conModels= db.Context.Utilities.JsonToConditionalModels(json)
var
student = db.Queryable<Student>().Where(conModels).ToList();
//select * from Student where id=1 and name = 'jack'
这种比较简单 多一条记录就多一个AND
2、二级多条件动态参数
这种模式对于表格查询已经够用了,支持到2级查询,并且AND OR都比较灵活了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[ {
"FieldName"
:
"id"
,
"FieldValue"
:
"1"
,
"ConditionalType"
: 10},
{
"FieldName"
:
"id"
,
"FieldValue"
:
null
,
"ConditionalType"
: 12},
<