Skip to content

Commit c65db15

Browse files
committed
优化sqlserver支持
1 parent b0a9f3e commit c65db15

File tree

2 files changed

+44
-16
lines changed

2 files changed

+44
-16
lines changed

hsweb-web-dao/hsweb-web-dao-mybatis/src/main/java/org/hsweb/web/mybatis/builder/EasyOrmSqlBuilder.java

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030

3131
/**
3232
* @author zhouhao
33-
* @TODO
3433
*/
3534
public class EasyOrmSqlBuilder {
3635

@@ -148,8 +147,8 @@ public String buildUpdateFields(String resultMapId, String tableName, UpdatePara
148147
SqlAppender appender = new SqlAppender();
149148
columns.forEach(column -> {
150149
RDBColumnMetaData columnMetaData = column.getRDBColumnMetaData();
151-
if (columnMetaData.getName().contains(".")) return;
152150
if (columnMetaData == null) return;
151+
if (columnMetaData.getName().contains(".")) return;
153152
try {
154153
Object tmp = propertyUtils.getProperty(param.getData(), columnMetaData.getAlias());
155154
if (tmp == null) return;
@@ -219,16 +218,15 @@ public String buildSelectFields(String resultMapId, String tableName, QueryParam
219218
public String buildOrder(String resultMapId, String tableName, QueryParam param) {
220219
RDBTableMetaData tableMetaData = createMeta(tableName, resultMapId);
221220
SqlAppender appender = new SqlAppender(" order by ");
222-
param.getSorts().stream()
223-
.forEach(sort -> {
224-
RDBColumnMetaData column = tableMetaData.getColumn(sort.getName());
225-
if (column == null)
226-
column = tableMetaData.findColumn(sort.getName());
227-
if (column == null) return;
228-
String cname = column.getName();
229-
if (!cname.contains(".")) cname = tableName.concat(".").concat(cname);
230-
appender.add(encodeColumn(tableMetaData.getDatabaseMetaData().getDialect(), cname), " ", sort.getOrder(), ",");
231-
});
221+
param.getSorts().forEach(sort -> {
222+
RDBColumnMetaData column = tableMetaData.getColumn(sort.getName());
223+
if (column == null)
224+
column = tableMetaData.findColumn(sort.getName());
225+
if (column == null) return;
226+
String cname = column.getName();
227+
if (!cname.contains(".")) cname = tableName.concat(".").concat(cname);
228+
appender.add(encodeColumn(tableMetaData.getDatabaseMetaData().getDialect(), cname), " ", sort.getOrder(), ",");
229+
});
232230
if (appender.isEmpty()) return "";
233231
appender.removeLast();
234232
return appender.toString();
@@ -242,6 +240,14 @@ public String buildWhereForUpdate(String resultMapId, String tableName, List<Ter
242240
return where;
243241
}
244242

243+
public String buildQuerySql(String resultMapId, String tableName, Object param) {
244+
Pager.reset(); //不使用插件进行分页
245+
RDBTableMetaData tableMetaData = createMeta(tableName, resultMapId);
246+
RDBDatabaseMetaData databaseMetaDate = getActiveDatabase();
247+
CommonSqlRender render = (CommonSqlRender) databaseMetaDate.getRenderer(SqlRender.TYPE.SELECT);
248+
return render.render(tableMetaData, param).getSql();
249+
}
250+
245251
public String buildWhere(String resultMapId, String tableName, List<Term> terms) {
246252
RDBTableMetaData tableMetaData = createMeta(tableName, resultMapId);
247253
RDBDatabaseMetaData databaseMetaDate = getActiveDatabase();

hsweb-web-service/hsweb-web-service-simple/src/main/java/org/hsweb/web/service/impl/system/DataBaseManagerServiceImpl.java

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,10 @@
66
import org.hsweb.ezorm.rdb.meta.RDBDatabaseMetaData;
77
import org.hsweb.ezorm.rdb.meta.RDBTableMetaData;
88
import org.hsweb.ezorm.rdb.meta.expand.SimpleMapWrapper;
9-
import org.hsweb.ezorm.rdb.meta.parser.H2TableMetaParser;
10-
import org.hsweb.ezorm.rdb.meta.parser.MysqlTableMetaParser;
11-
import org.hsweb.ezorm.rdb.meta.parser.OracleTableMetaParser;
12-
import org.hsweb.ezorm.rdb.meta.parser.TableMetaParser;
9+
import org.hsweb.ezorm.rdb.meta.parser.*;
1310
import org.hsweb.ezorm.rdb.render.SqlRender;
1411
import org.hsweb.ezorm.rdb.render.dialect.H2RDBDatabaseMetaData;
12+
import org.hsweb.ezorm.rdb.render.dialect.MSSQLRDBDatabaseMetaData;
1513
import org.hsweb.ezorm.rdb.render.dialect.MysqlRDBDatabaseMetaData;
1614
import org.hsweb.ezorm.rdb.render.dialect.OracleRDBDatabaseMetaData;
1715
import org.hsweb.ezorm.rdb.render.support.simple.SimpleSQL;
@@ -97,6 +95,7 @@ public String createAlterSql(RDBTableMetaData newTable) throws Exception {
9795
}
9896

9997
public String createAlterSql(RDBDatabaseMetaData databaseMetaData, TableMetaParser tableMetaParser, RDBTableMetaData newTable) throws Exception {
98+
newTable.setDatabaseMetaData(databaseMetaData);
10099
databaseMetaData.putTable(tableMetaParser.parse(newTable.getName()));
101100
SQL sql = databaseMetaData.getRenderer(SqlRender.TYPE.META_ALTER).render(newTable, true);
102101
if (sql instanceof EmptySQL) return "";
@@ -113,6 +112,7 @@ public String createCreateSql(RDBTableMetaData newTable) throws Exception {
113112
}
114113

115114
public String createCreateSql(RDBDatabaseMetaData databaseMetaData, RDBTableMetaData newTable) throws Exception {
115+
newTable.setDatabaseMetaData(databaseMetaData);
116116
SQL sql = databaseMetaData.getRenderer(SqlRender.TYPE.META_CREATE).render(newTable, true);
117117
if (sql instanceof EmptySQL) return "";
118118
StringBuilder builder = new StringBuilder(sql.getSql());
@@ -159,6 +159,28 @@ public TableMetaParser getTableMetaParser(SqlExecutor sqlExecutor) {
159159
public RDBDatabaseMetaData getDatabaseMetaData() {
160160
return new H2RDBDatabaseMetaData();
161161
}
162+
},
163+
sqlserver {
164+
@Override
165+
public RDBDatabaseMetaData getDatabaseMetaData() {
166+
return new MSSQLRDBDatabaseMetaData();
167+
}
168+
169+
@Override
170+
public TableMetaParser getTableMetaParser(SqlExecutor sqlExecutor) {
171+
return new SqlServer2012TableMetaParser(sqlExecutor);
172+
}
173+
},
174+
jtds_sqlserver{
175+
@Override
176+
public RDBDatabaseMetaData getDatabaseMetaData() {
177+
return new MSSQLRDBDatabaseMetaData();
178+
}
179+
180+
@Override
181+
public TableMetaParser getTableMetaParser(SqlExecutor sqlExecutor) {
182+
return new SqlServer2012TableMetaParser(sqlExecutor);
183+
}
162184
};
163185

164186
public abstract RDBDatabaseMetaData getDatabaseMetaData();

0 commit comments

Comments
 (0)