///
///获取查询条件语句///
/// 查询实体类型
/// 查询实体
/// 参数列表
/// 条件语句
/// 属性对象
private static void GetQueryWhere(SearchT searchEntity, ListsqlParameters, StringBuilder WhereSql, PropertyInfo property)
{//验证值是否有效
if (WhereValueValidate(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 asSqlLikeAttribute).Value;switch(sqlLikeVal)
{caseSqlLikeType.LikeAll:
WhereSql.AppendFormat("AND {0} Like '%{1}%'", !string.IsNullOrEmpty(columnName) ?columnName : property.Name, proprtyValue);break;caseSqlLikeType.LikeLeft:
WhereSql.AppendFormat("AND {0} Like '%{1}'", !string.IsNullOrEmpty(columnName) ?columnName : property.Name, proprtyValue);break;caseSqlLikeType.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(newMySqlParameter(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(1)));
}else{
WhereSql.AppendFormat("AND {0} <= {1}", columnName, parameterName);
sqlParameters.Add(newMySqlParameter(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(newMySqlParameter(parameterName, property.GetValue(searchEntity)));
}
}
}
}