public static IEnumerable <TEntity> Search <TEntity>(this IDbConnection connection, SearchParameters searchParameters, ITypeMappingProvider typeMappingProvider = null, string palceHoder = "@") { var entityType = typeof(TEntity); //构建表名 var tableName = entityType.Name; if (typeMappingProvider != null) { tableName = typeMappingProvider.GetTableName(entityType); } //构建查询列 var columns = string.Join(",", entityType.GetProperties().Select(x => $" {x.Name} ")); if (typeMappingProvider != null) { columns = string.Join(",", entityType.GetProperties().Select(x => $" {typeMappingProvider.GetColumnName(x)} ")); } var builder = new StringBuilder($"SELECT {columns} FROM {tableName}"); //构建Where语句 var sqlWhere = searchParameters.BuildSqlWhere(); if (!string.IsNullOrEmpty(sqlWhere.Item1)) { builder.Append(sqlWhere.Item1); } //构建Order By语句 var sqlOrderBy = searchParameters.BuildSqlOrderBy(); if (!string.IsNullOrEmpty(sqlOrderBy)) { builder.Append(sqlOrderBy); } //构建Limit语句 var sqlLimit = searchParameters.BuildSqlLimit(); if (!string.IsNullOrEmpty(sqlLimit)) { builder.Append(sqlLimit); } //查询 var sql = builder.ToString(); if (sqlWhere.Item2 != null && sqlWhere.Item2.Any()) { return(connection.Query <TEntity>(sql, sqlWhere.Item2)); } return(connection.Query <TEntity>(sql)); }
public static IEnumerable <TEntity> Search <TEntity>(this IDbConnection connection, SearchParameters searchParameters) { var builder = new StringBuilder($"SELECT * FROM {typeof(TEntity).Name}"); //构建Where语句 var sqlWhere = searchParameters.BuildSqlWhere(); if (!string.IsNullOrEmpty(sqlWhere.Item1)) { builder.Append(sqlWhere.Item1); } //构建Order By语句 var sqlOrderBy = searchParameters.BuildSqlOrderBy(); if (!string.IsNullOrEmpty(sqlOrderBy)) { builder.Append(sqlOrderBy); } //构建Limit语句 var sqlLimit = searchParameters.BuildSqlLimit(); if (!string.IsNullOrEmpty(sqlLimit)) { builder.Append(sqlLimit); } //查询 var sql = builder.ToString(); if (sqlWhere.Item2 != null && sqlWhere.Item2.Any()) { return(connection.Query <TEntity>(sql, sqlWhere.Item2)); } return(connection.Query <TEntity>(sql)); }