This commit is contained in:
Looly
2020-05-01 22:20:27 +08:00
parent c697de539f
commit be65a142b4
18 changed files with 173 additions and 75 deletions

View File

@@ -1,11 +1,5 @@
package cn.hutool.db.sql;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Map.Entry;
import cn.hutool.core.builder.Builder;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ArrayUtil;
@@ -15,6 +9,12 @@ import cn.hutool.db.DbRuntimeException;
import cn.hutool.db.Entity;
import cn.hutool.db.dialect.DialectName;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Map.Entry;
/**
* SQL构建器<br>
* 首先拼接SQL语句值使用 ? 占位<br>
@@ -404,12 +404,13 @@ public class SqlBuilder implements Builder<String>{
}
sql.append(" ORDER BY ");
String field = null;
String field;
boolean isFirst = true;
for (Order order : orders) {
field = order.getField();
if (null != wrapper) {
// 包装字段名
field = wrapper.wrap(order.getField());
field = wrapper.wrap(field);
}
if (StrUtil.isBlank(field)) {
continue;

View File

@@ -19,4 +19,16 @@ public class SqlBuilderTest {
SqlBuilder builder4 = SqlBuilder.create().select().from("user").where(LogicalOperator.AND, new Condition("name", "is not null"));
Assert.assertEquals("SELECT * FROM user WHERE name IS NOT NULL", builder4.build());
}
@Test
public void orderByTest(){
SqlBuilder builder = SqlBuilder.create().select("id", "username").from("user")
.join("role", SqlBuilder.Join.INNER)
.on("user.id = role.user_id")
.where(new Condition("age", ">=", 18),
new Condition("username", "abc", Condition.LikeType.Contains)
).orderBy(new Order("id"));
Assert.assertEquals("SELECT id,username FROM user INNER JOIN role ON user.id = role.user_id WHERE age >= ? AND username LIKE ? ORDER BY id", builder.build());
}
}