SqlLikeAttribute 特性原来只实现了全Like,今天增加左、右Like实现

更新时间:2016-04-30
/// <summary>
/// 获取查询条件语句
/// </summary>
/// <typeparam name="SearchT">查询实体类型</typeparam>
/// <param name="searchEntity">查询实体</param>
/// <param name="sqlParameters">参数列表</param>
/// <param name="WhereSql">条件语句</param>
/// <param name="item">属性对象</param>
private static void GetQueryWhere<SearchT>(SearchT searchEntity, List<MySqlParameter> sqlParameters, StringBuilder WhereSql, PropertyInfo property)
{
//验证值是否有效
if (WhereValueValidate<SearchT>(searchEntity, property))
{
var sqlLikeAttr = property.GetCustomAttribute(typeof(SqlLikeAttribute));
if (sqlLikeAttr != null)
{
var columnName = GetColumnName(property);
var proprtyValue = filterLikeRiskStr(property.GetValue(searchEntity)); if (!string.IsNullOrEmpty(proprtyValue))
{
//获取特性值
var sqlLikeVal = (sqlLikeAttr as SqlLikeAttribute).Value;
switch (sqlLikeVal)
{
case SqlLikeType.LikeAll:
WhereSql.AppendFormat(" AND {0} Like '%{1}%'", !string.IsNullOrEmpty(columnName) ? columnName : property.Name, proprtyValue);
break;
case SqlLikeType.LikeLeft:
WhereSql.AppendFormat(" AND {0} Like '%{1}'", !string.IsNullOrEmpty(columnName) ? columnName : property.Name, proprtyValue);
break;
case SqlLikeType.LikeRight:
WhereSql.AppendFormat(" AND {0} Like '{1}%'", !string.IsNullOrEmpty(columnName) ? columnName : property.Name, proprtyValue);
break;
default:
WhereSql.AppendFormat(" AND {0} Like '%{1}%'", !string.IsNullOrEmpty(columnName) ? columnName : property.Name, proprtyValue);
break;
}
}
}
else if (property.GetCustomAttribute(typeof(GreaterAndEqualAttribute)) != null)
{
var columnName = GetColumnName(property);
if (!string.IsNullOrEmpty(columnName))
{
var parameterName = string.Format("@{0}", property.Name);
WhereSql.AppendFormat(" AND {0} >= {1}", columnName, parameterName);
sqlParameters.Add(new MySqlParameter(parameterName, property.GetValue(searchEntity)));
}
}
else if (property.GetCustomAttribute(typeof(LessAndEqualAttribute)) != null)
{
var columnName = GetColumnName(property);
if (!string.IsNullOrEmpty(columnName))
{
var parameterName = string.Format("@{0}", property.Name);
var value = property.GetValue(searchEntity);
if (value.GetType().Name.Equals("DateTime"))
{
WhereSql.AppendFormat(" AND {0} < {1}", columnName, parameterName);
sqlParameters.Add(new MySqlParameter(parameterName, Convert.ToDateTime(value).AddDays()));
}
else
{
WhereSql.AppendFormat(" AND {0} <= {1}", columnName, parameterName);
sqlParameters.Add(new MySqlParameter(parameterName, value));
}
}
}
else
{
//新方法灵活性高
var columnName = GetColumnName(property);
if (!string.IsNullOrEmpty(columnName))
{
var parameterName = string.Format("@{0}", property.Name);
WhereSql.AppendFormat(" AND {0} = {1}", columnName, parameterName);
sqlParameters.Add(new MySqlParameter(parameterName, property.GetValue(searchEntity)));
}
}
}
}

最新文章

  1. PHP安装模式cgi、fastcgi、php_mod比较
  2. VC 解密OUTLOOK pop3保存注册表密码
  3. Extjs读取本地下拉选框数据源,分为text和value,显示text,传值value
  4. Redis源码研究--redis.h
  5. c++ primer (5)2
  6. 李洪强iOS开发之-PCH文件的配置
  7. 启动weblogic11g一直提示&lt;141281&gt; &lt;unable to get file lock, will retry ...&gt;
  8. net core开发环境准备
  9. Emojicon - 为你提供emoji表情的整套方案
  10. Java 集合 fail-fast机制 [ 转载 ]
  11. 深入了解Bundle和Map
  12. Linux history命令
  13. 笔记:I/O流-字符集
  14. 【转】H.264中的NAL技术
  15. hadoop常用操作命令
  16. DB2 数据库的安装配置及监控
  17. sql where,group by ,having,order by用法和区别
  18. Linux基础命令---显示登录用户logname
  19. Leetcode 969. 煎饼排序
  20. Scratch 3.0 版本比较

热门文章

  1. iOS-tableView点击下拉菜单
  2. 总结前端JQ常用的一些操作手法(慢慢完善)
  3. VLD 1.0 ReadMe翻译尝试
  4. Tango_with_django_17笔记
  5. [music]&amp;lt;蔷薇&amp;gt;
  6. discuz x2 个人资料项排序问题解决方法、添加自定义字段、修改栏目名称和介绍
  7. 为js数组扩展方法
  8. iOS Layer CABasicAnimation
  9. mysql 在启动时配置文件的查找方式
  10. git status简介