Skip to content

Commit 70a2a48

Browse files
committed
增加 useCondition 表达式条件, true 使用,false 不使用
1 parent fe8bb71 commit 70a2a48

File tree

4 files changed

+452
-1
lines changed

4 files changed

+452
-1
lines changed

mapper/src/main/java/io/mybatis/mapper/example/Example.java

Lines changed: 213 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -686,6 +686,16 @@ public OrCriteria<T> andCondition(String condition, Object value) {
686686
return this;
687687
}
688688

689+
/**
690+
* 指定字段为 null
691+
*
692+
* @param useCondition 表达式条件, true 使用,false 不使用
693+
* @param fn 字段对应的 get 方法引用
694+
*/
695+
public OrCriteria<T> isNull(boolean useCondition, Fn<T, Object> fn) {
696+
return useCondition ? isNull(fn) : this;
697+
}
698+
689699
/**
690700
* 指定字段为 null
691701
*
@@ -696,6 +706,16 @@ public OrCriteria<T> isNull(Fn<T, Object> fn) {
696706
return this;
697707
}
698708

709+
/**
710+
* 指定字段不为 null
711+
*
712+
* @param useCondition 表达式条件, true 使用,false 不使用
713+
* @param fn 字段对应的 get 方法引用
714+
*/
715+
public OrCriteria<T> isNotNull(boolean useCondition, Fn<T, Object> fn) {
716+
return useCondition ? isNotNull(fn) : this;
717+
}
718+
699719
/**
700720
* 指定字段不为 null
701721
*
@@ -706,6 +726,17 @@ public OrCriteria<T> isNotNull(Fn<T, Object> fn) {
706726
return this;
707727
}
708728

729+
/**
730+
* 字段 = 值
731+
*
732+
* @param useCondition 表达式条件, true 使用,false 不使用
733+
* @param fn 字段对应的 get 方法引用
734+
* @param value 值
735+
*/
736+
public OrCriteria<T> eq(boolean useCondition, Fn<T, Object> fn, Object value) {
737+
return useCondition ? eq(fn, value) : this;
738+
}
739+
709740
/**
710741
* 字段 = 值
711742
*
@@ -717,6 +748,17 @@ public OrCriteria<T> eq(Fn<T, Object> fn, Object value) {
717748
return this;
718749
}
719750

751+
/**
752+
* 字段 != 值
753+
*
754+
* @param useCondition 表达式条件, true 使用,false 不使用
755+
* @param fn 字段对应的 get 方法引用
756+
* @param value 值
757+
*/
758+
public OrCriteria<T> ne(boolean useCondition, Fn<T, Object> fn, Object value) {
759+
return useCondition ? ne(fn, value) : this;
760+
}
761+
720762
/**
721763
* 字段 != 值
722764
*
@@ -728,6 +770,18 @@ public OrCriteria<T> ne(Fn<T, Object> fn, Object value) {
728770
return this;
729771
}
730772

773+
/**
774+
* 字段 > 值
775+
*
776+
* @param useCondition 表达式条件, true 使用,false 不使用
777+
* @param fn 字段对应的 get 方法引用
778+
* @param value 值
779+
*/
780+
public OrCriteria<T> gt(boolean useCondition, Fn<T, Object> fn, Object value) {
781+
return useCondition ? gt(fn, value) : this;
782+
}
783+
784+
731785
/**
732786
* 字段 > 值
733787
*
@@ -739,6 +793,17 @@ public OrCriteria<T> gt(Fn<T, Object> fn, Object value) {
739793
return this;
740794
}
741795

796+
/**
797+
* 字段 >= 值
798+
*
799+
* @param useCondition 表达式条件, true 使用,false 不使用
800+
* @param fn 字段对应的 get 方法引用
801+
* @param value 值
802+
*/
803+
public OrCriteria<T> ge(boolean useCondition, Fn<T, Object> fn, Object value) {
804+
return useCondition ? ge(fn, value) : this;
805+
}
806+
742807
/**
743808
* 字段 >= 值
744809
*
@@ -750,6 +815,18 @@ public OrCriteria<T> ge(Fn<T, Object> fn, Object value) {
750815
return this;
751816
}
752817

818+
/**
819+
* 字段 < 值
820+
*
821+
* @param useCondition 表达式条件, true 使用,false 不使用
822+
* @param fn 字段对应的 get 方法引用
823+
* @param value 值
824+
*/
825+
public OrCriteria<T> lt(boolean useCondition, Fn<T, Object> fn, Object value) {
826+
return useCondition ? lt(fn, value) : this;
827+
}
828+
829+
753830
/**
754831
* 字段 < 值
755832
*
@@ -761,6 +838,17 @@ public OrCriteria<T> lt(Fn<T, Object> fn, Object value) {
761838
return this;
762839
}
763840

841+
/**
842+
* 字段 <= 值
843+
*
844+
* @param useCondition 表达式条件, true 使用,false 不使用
845+
* @param fn 字段对应的 get 方法引用
846+
* @param value 值
847+
*/
848+
public OrCriteria<T> le(boolean useCondition, Fn<T, Object> fn, Object value) {
849+
return useCondition ? le(fn, value) : this;
850+
}
851+
764852
/**
765853
* 字段 <= 值
766854
*
@@ -772,6 +860,18 @@ public OrCriteria<T> le(Fn<T, Object> fn, Object value) {
772860
return this;
773861
}
774862

863+
/**
864+
* 字段 in (值集合)
865+
*
866+
* @param useCondition 表达式条件, true 使用,false 不使用
867+
* @param fn 字段对应的 get 方法引用
868+
* @param values 值集合
869+
*/
870+
@SuppressWarnings("rawtypes")
871+
public OrCriteria<T> in(boolean useCondition, Fn<T, Object> fn, Iterable values) {
872+
return useCondition ? in(fn, values) : this;
873+
}
874+
775875
/**
776876
* 字段 in (值集合)
777877
*
@@ -784,6 +884,18 @@ public OrCriteria<T> in(Fn<T, Object> fn, Iterable values) {
784884
return this;
785885
}
786886

887+
/**
888+
* 字段 not in (值集合)
889+
*
890+
* @param useCondition 表达式条件, true 使用,false 不使用
891+
* @param fn 字段对应的 get 方法引用
892+
* @param values 值集合
893+
*/
894+
@SuppressWarnings("rawtypes")
895+
public OrCriteria<T> notIn(boolean useCondition, Fn<T, Object> fn, Iterable values) {
896+
return useCondition ? notIn(fn, values) : this;
897+
}
898+
787899
/**
788900
* 字段 not in (值集合)
789901
*
@@ -796,6 +908,18 @@ public OrCriteria<T> notIn(Fn<T, Object> fn, Iterable values) {
796908
return this;
797909
}
798910

911+
/**
912+
* 字段 between value1 and value 2
913+
*
914+
* @param useCondition 表达式条件, true 使用,false 不使用
915+
* @param fn 字段对应的 get 方法引用
916+
* @param value1 值1
917+
* @param value2 值2
918+
*/
919+
public OrCriteria<T> between(boolean useCondition, Fn<T, Object> fn, Object value1, Object value2) {
920+
return useCondition ? between(fn, value1, value2) : this;
921+
}
922+
799923
/**
800924
* 字段 between value1 and value 2
801925
*
@@ -808,6 +932,19 @@ public OrCriteria<T> between(Fn<T, Object> fn, Object value1, Object value2) {
808932
return this;
809933
}
810934

935+
/**
936+
* 字段 not between value1 and value 2
937+
*
938+
* @param useCondition 表达式条件, true 使用,false 不使用
939+
* @param fn 字段对应的 get 方法引用
940+
* @param value1 值1
941+
* @param value2 值2
942+
*/
943+
public OrCriteria<T> notBetween(boolean useCondition, Fn<T, Object> fn, Object value1, Object value2) {
944+
return useCondition ? notBetween(fn, value1, value2) : this;
945+
}
946+
947+
811948
/**
812949
* 字段 not between value1 and value 2
813950
*
@@ -820,6 +957,17 @@ public OrCriteria<T> notBetween(Fn<T, Object> fn, Object value1, Object value2)
820957
return this;
821958
}
822959

960+
/**
961+
* 字段 like %值%
962+
*
963+
* @param useCondition 表达式条件, true 使用,false 不使用
964+
* @param fn 字段对应的 get 方法引用
965+
* @param value 值,两侧自动添加 %
966+
*/
967+
public OrCriteria<T> contains(boolean useCondition, Fn<T, Object> fn, String value) {
968+
return useCondition ? contains(fn, value) : this;
969+
}
970+
823971
/**
824972
* 字段 like %值%
825973
*
@@ -831,6 +979,17 @@ public OrCriteria<T> contains(Fn<T, Object> fn, String value) {
831979
return this;
832980
}
833981

982+
/**
983+
* 字段 like 值%,匹配 value 为前缀的值
984+
*
985+
* @param useCondition 表达式条件, true 使用,false 不使用
986+
* @param fn 字段对应的 get 方法引用
987+
* @param value 值,右侧自动添加 %
988+
*/
989+
public OrCriteria<T> startsWith(boolean useCondition, Fn<T, Object> fn, String value) {
990+
return useCondition ? startsWith(fn, value) : this;
991+
}
992+
834993
/**
835994
* 字段 like 值%,匹配 value 为前缀的值
836995
*
@@ -842,6 +1001,17 @@ public OrCriteria<T> startsWith(Fn<T, Object> fn, String value) {
8421001
return this;
8431002
}
8441003

1004+
/**
1005+
* 字段 like %值,匹配 value 为后缀的值
1006+
*
1007+
* @param useCondition 表达式条件, true 使用,false 不使用
1008+
* @param fn 字段对应的 get 方法引用
1009+
* @param value 值,左侧自动添加 %
1010+
*/
1011+
public OrCriteria<T> endsWith(boolean useCondition, Fn<T, Object> fn, String value) {
1012+
return useCondition ? endsWith(fn, value) : this;
1013+
}
1014+
8451015
/**
8461016
* 字段 like %值,匹配 value 为后缀的值
8471017
*
@@ -853,6 +1023,17 @@ public OrCriteria<T> endsWith(Fn<T, Object> fn, String value) {
8531023
return this;
8541024
}
8551025

1026+
/**
1027+
* 字段 like 值
1028+
*
1029+
* @param useCondition 表达式条件, true 使用,false 不使用
1030+
* @param fn 字段对应的 get 方法引用
1031+
* @param value 值,需要指定 '%'(多个), '_'(单个) 模糊匹配
1032+
*/
1033+
public OrCriteria<T> like(boolean useCondition, Fn<T, Object> fn, String value) {
1034+
return useCondition ? like(fn, value) : this;
1035+
}
1036+
8561037
/**
8571038
* 字段 like 值
8581039
*
@@ -864,6 +1045,17 @@ public OrCriteria<T> like(Fn<T, Object> fn, String value) {
8641045
return this;
8651046
}
8661047

1048+
/**
1049+
* 字段 not like 值
1050+
*
1051+
* @param useCondition 表达式条件, true 使用,false 不使用
1052+
* @param fn 字段对应的 get 方法引用
1053+
* @param value 值,需要指定 % 模糊匹配
1054+
*/
1055+
public OrCriteria<T> notLike(boolean useCondition, Fn<T, Object> fn, String value) {
1056+
return useCondition ? notLike(fn, value) : this;
1057+
}
1058+
8671059
/**
8681060
* 字段 not like 值
8691061
*
@@ -875,6 +1067,16 @@ public OrCriteria<T> notLike(Fn<T, Object> fn, String value) {
8751067
return this;
8761068
}
8771069

1070+
/**
1071+
* 添加任意条件,条件一定是后端使用的,需要自己防止 SQL 注入
1072+
*
1073+
* @param useCondition 表达式条件, true 使用,false 不使用
1074+
* @param condition 任意条件,例如 "length(countryname)<5"
1075+
*/
1076+
public OrCriteria<T> anyCondition(boolean useCondition, String condition) {
1077+
return useCondition ? anyCondition(condition) : this;
1078+
}
1079+
8781080
/**
8791081
* 添加任意条件,条件一定是后端使用的,需要自己防止 SQL 注入
8801082
*
@@ -885,6 +1087,17 @@ public OrCriteria<T> anyCondition(String condition) {
8851087
return this;
8861088
}
8871089

1090+
/**
1091+
* 手写左边条件,右边用value值
1092+
*
1093+
* @param useCondition 表达式条件, true 使用,false 不使用
1094+
* @param condition 例如 "length(countryname)="
1095+
* @param value 例如 5
1096+
*/
1097+
public OrCriteria<T> anyCondition(boolean useCondition, String condition, Object value) {
1098+
return useCondition ? anyCondition(condition, value) : this;
1099+
}
1100+
8881101
/**
8891102
* 手写左边条件,右边用value值
8901103
*

0 commit comments

Comments
 (0)