.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是否自身有模糊查询的写法?
...全文
1121 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 版主 2018-04-23
  • 打赏
  • 举报
回复
引用 5 楼 tianba19820903 的回复:
目前这个dll包貌似没有找到可以直接实现模糊查询的功能,但是发现可以采用where中传入like语句,参数中传入带有%的字符串匿名参,可以实现,暂时已经这样做了,如果有更好的方法欢迎大家继续讨论,谢谢各位
那你可以给他扩展一个 like方法。 方法里传入的字符串增加 %%
tianba19820903 2018-04-23
  • 打赏
  • 举报
回复
目前这个dll包貌似没有找到可以直接实现模糊查询的功能,但是发现可以采用where中传入like语句,参数中传入带有%的字符串匿名参,可以实现,暂时已经这样做了,如果有更好的方法欢迎大家继续讨论,谢谢各位
sprints_昊天 2018-04-23
  • 打赏
  • 举报
回复
好吧瞎说的 别在意
正怒月神 版主 2018-04-23
  • 打赏
  • 举报
回复
不清楚 这需要那些用Dapper的人告诉你了。
sprints_昊天 2018-04-23
  • 打赏
  • 举报
回复
你对这个方法扩展一下就好了

62,054

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧