This commit is contained in:
Looly 2021-09-28 00:47:09 +08:00
parent f1b6d84fe7
commit 05b3d83a37
5 changed files with 39 additions and 13 deletions

View File

@ -19,6 +19,7 @@
* 【http 】 修复HttpCookie设置cookies的方法不符合RFC6265规范问题pr#418@Gitee * 【http 】 修复HttpCookie设置cookies的方法不符合RFC6265规范问题pr#418@Gitee
* 【http 】 修复Extractor中filter无效问题 * 【http 】 修复Extractor中filter无效问题
* 【json 】 修复JSONGetter.getJSONArray判断null的问题issue#I4C15H@Gitee * 【json 】 修复JSONGetter.getJSONArray判断null的问题issue#I4C15H@Gitee
* 【db 】 修复Condition没占位符的情况下sql没引号问题issue#1846@Github
------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------

View File

@ -257,6 +257,16 @@ public class Condition extends CloneSupport<Condition> {
return OPERATOR_IS.equalsIgnoreCase(this.operator); return OPERATOR_IS.equalsIgnoreCase(this.operator);
} }
/**
* 是否LIKE条件
*
* @return 是否LIKE条件
* @since 5.7.14
*/
public boolean isOperatorLike() {
return OPERATOR_LIKE.equalsIgnoreCase(this.operator);
}
/** /**
* 检查值是否为null如果为null转换为 "IS NULL"形式 * 检查值是否为null如果为null转换为 "IS NULL"形式
* *
@ -343,7 +353,9 @@ public class Condition extends CloneSupport<Condition> {
} }
} else { } else {
// 直接使用条件值 // 直接使用条件值
conditionStrBuilder.append(" ").append(this.value); final String valueStr = String.valueOf(this.value);
conditionStrBuilder.append(" ").append(isOperatorLike() ?
StrUtil.wrap(valueStr, "'") : valueStr);
} }
} }
@ -536,14 +548,14 @@ public class Condition extends CloneSupport<Condition> {
* @param value 被转换的字符串值 * @param value 被转换的字符串值
* @return 转换后的值 * @return 转换后的值
*/ */
private static Object tryToNumber(String value){ private static Object tryToNumber(String value) {
value = StrUtil.trim(value); value = StrUtil.trim(value);
if(false == NumberUtil.isNumber(value)){ if (false == NumberUtil.isNumber(value)) {
return value; return value;
} }
try{ try {
return NumberUtil.parseNumber(value); return NumberUtil.parseNumber(value);
} catch (Exception ignore){ } catch (Exception ignore) {
return value; return value;
} }
} }

View File

@ -24,7 +24,7 @@ public class ConditionBuilder implements Builder<String> {
* 创建构建器 * 创建构建器
* *
* @param conditions 条件列表 * @param conditions 条件列表
* @return {@link ConditionBuilder} * @return ConditionBuilder
*/ */
public static ConditionBuilder of(Condition... conditions) { public static ConditionBuilder of(Condition... conditions) {
return new ConditionBuilder(conditions); return new ConditionBuilder(conditions);

View File

@ -85,17 +85,17 @@ public class SqlUtil {
* 创建LIKE语句中的值创建的结果为 * 创建LIKE语句中的值创建的结果为
* *
* <pre> * <pre>
* 1LikeType.StartWith: %value * 1LikeType.StartWith: '%value'
* 2LikeType.EndWith: value% * 2LikeType.EndWith: 'value%'
* 3LikeType.Contains: %value% * 3LikeType.Contains: '%value%'
* </pre> * </pre>
* <p> * <p>
* 如果withLikeKeyword为true则结果为 * 如果withLikeKeyword为true则结果为
* *
* <pre> * <pre>
* 1LikeType.StartWith: LIKE %value * 1LikeType.StartWith: LIKE '%value'
* 2LikeType.EndWith: LIKE value% * 2LikeType.EndWith: LIKE 'value%'
* 3LikeType.Contains: LIKE %value% * 3LikeType.Contains: LIKE '%value%'
* </pre> * </pre>
* *
* @param value 被查找值 * @param value 被查找值

View File

@ -21,7 +21,7 @@ public class SqlBuilderTest {
} }
@Test @Test
public void orderByTest(){ public void orderByTest() {
SqlBuilder builder = SqlBuilder.create().select("id", "username").from("user") SqlBuilder builder = SqlBuilder.create().select("id", "username").from("user")
.join("role", SqlBuilder.Join.INNER) .join("role", SqlBuilder.Join.INNER)
.on("user.id = role.user_id") .on("user.id = role.user_id")
@ -31,4 +31,17 @@ public class SqlBuilderTest {
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()); 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());
} }
@Test
public void likeTest() {
Condition conditionEquals = new Condition("user", "123", Condition.LikeType.Contains);
conditionEquals.setPlaceHolder(false);
SqlBuilder sqlBuilder = new SqlBuilder();
sqlBuilder.select("id");
sqlBuilder.from("user");
sqlBuilder.where(conditionEquals);
String s1 = sqlBuilder.build();
Assert.assertEquals("SELECT id FROM user WHERE user LIKE '%123%'", s1);
}
} }