.NET MVC 项目中 SqlBuilder 怎么写模糊查询
◣NSD◥ 2018-04-21 11:39:34 引用的SqlBuilder点进去如下:
#region 程序集 Data, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
#endregion
using System.Runtime.CompilerServices;
namespace Data.Dapper {
public class SqlBuilder {
public SqlBuilder();
public SqlBuilder AddParameters([Dynamic] dynamic parameters);
public Template AddTemplate(string sql, [Dynamic] dynamic parameters = null);
public SqlBuilder GroupBy(string sql, [Dynamic] dynamic parameters = null);
public SqlBuilder Having(string sql, [Dynamic] dynamic parameters = null);
public SqlBuilder InnerJoin(string sql, [Dynamic] dynamic parameters = null);
public SqlBuilder Intersect(string sql, [Dynamic] dynamic parameters = null);
public SqlBuilder Join(string sql, [Dynamic] dynamic parameters = null);
public SqlBuilder LeftJoin(string sql, [Dynamic] dynamic parameters = null);
public SqlBuilder OrderBy(string sql, [Dynamic] dynamic parameters = null);
public SqlBuilder OrWhere(string sql, [Dynamic] dynamic parameters = null);
public SqlBuilder RightJoin(string sql, [Dynamic] dynamic parameters = null);
public SqlBuilder Select(string sql, [Dynamic] dynamic parameters = null);
public SqlBuilder Where(string sql, [Dynamic] dynamic parameters = null);
protected SqlBuilder AddClause(string name, string sql, object parameters, string joiner, string prefix = "", string postfix = "", bool isInclusive = false);
public class Template {
public Template(SqlBuilder builder, string sql, [Dynamic] dynamic parameters);
public string RawSql { get; }
public object Parameters { get; }
}
}
}
前台页面是将查询条件放在Form表单,然后以Model类型作为参数 Ajax提交到后台
后台sql 语句大致如下
var builder = new SqlBuilder();
string sql = @"SELECT T.USERNO, T.USERNAME, T.USERPWD
FROM SYSUSER T /**where**/ /**orderby**/";
var selector = builder.AddTemplate(sql);
if (!string.IsNullOrEmpty(model.USERNO)) {
builder.Where("T.USERNO = :USERNO", new { model.USERNO });
}
这里查询可以正常显示。现在想实现一个模糊查询的效果,
已经尝试过
builder.Where("T.USERNO LIKE :USERNO", new { model.USERNO }); 这种写法,如果在前台Form表单传入类似于 %123%
这种查询条件,也是可以实现的,所以为了实现要求, 暂时使用了JS在前台Form中默认的加上%符号来实现 即前台用户输入123 ,传递到后台的时候就自动变成 %123% 然后执行上面的LIKE语句了, 这样效果是可以达到,但感觉不是很方便,也不是很完美。不止SQLBuilder是否自身有模糊查询的写法?