Skip to content

Commit

Permalink
增加 useCondition 表达式条件, true 使用,false 不使用
Browse files Browse the repository at this point in the history
  • Loading branch information
abel533 committed Apr 11, 2022
1 parent fe8bb71 commit 70a2a48
Show file tree
Hide file tree
Showing 4 changed files with 452 additions and 1 deletion.
213 changes: 213 additions & 0 deletions mapper/src/main/java/io/mybatis/mapper/example/Example.java
Original file line number Diff line number Diff line change
Expand Up @@ -686,6 +686,16 @@ public OrCriteria<T> andCondition(String condition, Object value) {
return this;
}

/**
* 指定字段为 null
*
* @param useCondition 表达式条件, true 使用,false 不使用
* @param fn 字段对应的 get 方法引用
*/
public OrCriteria<T> isNull(boolean useCondition, Fn<T, Object> fn) {
return useCondition ? isNull(fn) : this;
}

/**
* 指定字段为 null
*
Expand All @@ -696,6 +706,16 @@ public OrCriteria<T> isNull(Fn<T, Object> fn) {
return this;
}

/**
* 指定字段不为 null
*
* @param useCondition 表达式条件, true 使用,false 不使用
* @param fn 字段对应的 get 方法引用
*/
public OrCriteria<T> isNotNull(boolean useCondition, Fn<T, Object> fn) {
return useCondition ? isNotNull(fn) : this;
}

/**
* 指定字段不为 null
*
Expand All @@ -706,6 +726,17 @@ public OrCriteria<T> isNotNull(Fn<T, Object> fn) {
return this;
}

/**
* 字段 = 值
*
* @param useCondition 表达式条件, true 使用,false 不使用
* @param fn 字段对应的 get 方法引用
* @param value 值
*/
public OrCriteria<T> eq(boolean useCondition, Fn<T, Object> fn, Object value) {
return useCondition ? eq(fn, value) : this;
}

/**
* 字段 = 值
*
Expand All @@ -717,6 +748,17 @@ public OrCriteria<T> eq(Fn<T, Object> fn, Object value) {
return this;
}

/**
* 字段 != 值
*
* @param useCondition 表达式条件, true 使用,false 不使用
* @param fn 字段对应的 get 方法引用
* @param value 值
*/
public OrCriteria<T> ne(boolean useCondition, Fn<T, Object> fn, Object value) {
return useCondition ? ne(fn, value) : this;
}

/**
* 字段 != 值
*
Expand All @@ -728,6 +770,18 @@ public OrCriteria<T> ne(Fn<T, Object> fn, Object value) {
return this;
}

/**
* 字段 > 值
*
* @param useCondition 表达式条件, true 使用,false 不使用
* @param fn 字段对应的 get 方法引用
* @param value 值
*/
public OrCriteria<T> gt(boolean useCondition, Fn<T, Object> fn, Object value) {
return useCondition ? gt(fn, value) : this;
}


/**
* 字段 > 值
*
Expand All @@ -739,6 +793,17 @@ public OrCriteria<T> gt(Fn<T, Object> fn, Object value) {
return this;
}

/**
* 字段 >= 值
*
* @param useCondition 表达式条件, true 使用,false 不使用
* @param fn 字段对应的 get 方法引用
* @param value 值
*/
public OrCriteria<T> ge(boolean useCondition, Fn<T, Object> fn, Object value) {
return useCondition ? ge(fn, value) : this;
}

/**
* 字段 >= 值
*
Expand All @@ -750,6 +815,18 @@ public OrCriteria<T> ge(Fn<T, Object> fn, Object value) {
return this;
}

/**
* 字段 < 值
*
* @param useCondition 表达式条件, true 使用,false 不使用
* @param fn 字段对应的 get 方法引用
* @param value 值
*/
public OrCriteria<T> lt(boolean useCondition, Fn<T, Object> fn, Object value) {
return useCondition ? lt(fn, value) : this;
}


/**
* 字段 < 值
*
Expand All @@ -761,6 +838,17 @@ public OrCriteria<T> lt(Fn<T, Object> fn, Object value) {
return this;
}

/**
* 字段 <= 值
*
* @param useCondition 表达式条件, true 使用,false 不使用
* @param fn 字段对应的 get 方法引用
* @param value 值
*/
public OrCriteria<T> le(boolean useCondition, Fn<T, Object> fn, Object value) {
return useCondition ? le(fn, value) : this;
}

/**
* 字段 <= 值
*
Expand All @@ -772,6 +860,18 @@ public OrCriteria<T> le(Fn<T, Object> fn, Object value) {
return this;
}

/**
* 字段 in (值集合)
*
* @param useCondition 表达式条件, true 使用,false 不使用
* @param fn 字段对应的 get 方法引用
* @param values 值集合
*/
@SuppressWarnings("rawtypes")
public OrCriteria<T> in(boolean useCondition, Fn<T, Object> fn, Iterable values) {
return useCondition ? in(fn, values) : this;
}

/**
* 字段 in (值集合)
*
Expand All @@ -784,6 +884,18 @@ public OrCriteria<T> in(Fn<T, Object> fn, Iterable values) {
return this;
}

/**
* 字段 not in (值集合)
*
* @param useCondition 表达式条件, true 使用,false 不使用
* @param fn 字段对应的 get 方法引用
* @param values 值集合
*/
@SuppressWarnings("rawtypes")
public OrCriteria<T> notIn(boolean useCondition, Fn<T, Object> fn, Iterable values) {
return useCondition ? notIn(fn, values) : this;
}

/**
* 字段 not in (值集合)
*
Expand All @@ -796,6 +908,18 @@ public OrCriteria<T> notIn(Fn<T, Object> fn, Iterable values) {
return this;
}

/**
* 字段 between value1 and value 2
*
* @param useCondition 表达式条件, true 使用,false 不使用
* @param fn 字段对应的 get 方法引用
* @param value1 值1
* @param value2 值2
*/
public OrCriteria<T> between(boolean useCondition, Fn<T, Object> fn, Object value1, Object value2) {
return useCondition ? between(fn, value1, value2) : this;
}

/**
* 字段 between value1 and value 2
*
Expand All @@ -808,6 +932,19 @@ public OrCriteria<T> between(Fn<T, Object> fn, Object value1, Object value2) {
return this;
}

/**
* 字段 not between value1 and value 2
*
* @param useCondition 表达式条件, true 使用,false 不使用
* @param fn 字段对应的 get 方法引用
* @param value1 值1
* @param value2 值2
*/
public OrCriteria<T> notBetween(boolean useCondition, Fn<T, Object> fn, Object value1, Object value2) {
return useCondition ? notBetween(fn, value1, value2) : this;
}


/**
* 字段 not between value1 and value 2
*
Expand All @@ -820,6 +957,17 @@ public OrCriteria<T> notBetween(Fn<T, Object> fn, Object value1, Object value2)
return this;
}

/**
* 字段 like %值%
*
* @param useCondition 表达式条件, true 使用,false 不使用
* @param fn 字段对应的 get 方法引用
* @param value 值,两侧自动添加 %
*/
public OrCriteria<T> contains(boolean useCondition, Fn<T, Object> fn, String value) {
return useCondition ? contains(fn, value) : this;
}

/**
* 字段 like %值%
*
Expand All @@ -831,6 +979,17 @@ public OrCriteria<T> contains(Fn<T, Object> fn, String value) {
return this;
}

/**
* 字段 like 值%,匹配 value 为前缀的值
*
* @param useCondition 表达式条件, true 使用,false 不使用
* @param fn 字段对应的 get 方法引用
* @param value 值,右侧自动添加 %
*/
public OrCriteria<T> startsWith(boolean useCondition, Fn<T, Object> fn, String value) {
return useCondition ? startsWith(fn, value) : this;
}

/**
* 字段 like 值%,匹配 value 为前缀的值
*
Expand All @@ -842,6 +1001,17 @@ public OrCriteria<T> startsWith(Fn<T, Object> fn, String value) {
return this;
}

/**
* 字段 like %值,匹配 value 为后缀的值
*
* @param useCondition 表达式条件, true 使用,false 不使用
* @param fn 字段对应的 get 方法引用
* @param value 值,左侧自动添加 %
*/
public OrCriteria<T> endsWith(boolean useCondition, Fn<T, Object> fn, String value) {
return useCondition ? endsWith(fn, value) : this;
}

/**
* 字段 like %值,匹配 value 为后缀的值
*
Expand All @@ -853,6 +1023,17 @@ public OrCriteria<T> endsWith(Fn<T, Object> fn, String value) {
return this;
}

/**
* 字段 like 值
*
* @param useCondition 表达式条件, true 使用,false 不使用
* @param fn 字段对应的 get 方法引用
* @param value 值,需要指定 '%'(多个), '_'(单个) 模糊匹配
*/
public OrCriteria<T> like(boolean useCondition, Fn<T, Object> fn, String value) {
return useCondition ? like(fn, value) : this;
}

/**
* 字段 like 值
*
Expand All @@ -864,6 +1045,17 @@ public OrCriteria<T> like(Fn<T, Object> fn, String value) {
return this;
}

/**
* 字段 not like 值
*
* @param useCondition 表达式条件, true 使用,false 不使用
* @param fn 字段对应的 get 方法引用
* @param value 值,需要指定 % 模糊匹配
*/
public OrCriteria<T> notLike(boolean useCondition, Fn<T, Object> fn, String value) {
return useCondition ? notLike(fn, value) : this;
}

/**
* 字段 not like 值
*
Expand All @@ -875,6 +1067,16 @@ public OrCriteria<T> notLike(Fn<T, Object> fn, String value) {
return this;
}

/**
* 添加任意条件,条件一定是后端使用的,需要自己防止 SQL 注入
*
* @param useCondition 表达式条件, true 使用,false 不使用
* @param condition 任意条件,例如 "length(countryname)<5"
*/
public OrCriteria<T> anyCondition(boolean useCondition, String condition) {
return useCondition ? anyCondition(condition) : this;
}

/**
* 添加任意条件,条件一定是后端使用的,需要自己防止 SQL 注入
*
Expand All @@ -885,6 +1087,17 @@ public OrCriteria<T> anyCondition(String condition) {
return this;
}

/**
* 手写左边条件,右边用value值
*
* @param useCondition 表达式条件, true 使用,false 不使用
* @param condition 例如 "length(countryname)="
* @param value 例如 5
*/
public OrCriteria<T> anyCondition(boolean useCondition, String condition, Object value) {
return useCondition ? anyCondition(condition, value) : this;
}

/**
* 手写左边条件,右边用value值
*
Expand Down
Loading

0 comments on commit 70a2a48

Please sign in to comment.