@@ -65,10 +65,16 @@ protected void condition(CriteriaCondition condition, StringBuilder query, List<
6565 predicate (query , " >= " , document , params );
6666 return ;
6767 case LIKE :
68+ predicateLike (query , document );
69+ return ;
6870 case CONTAINS :
71+ predicateContains (query , document );
72+ return ;
6973 case STARTS_WITH :
74+ predicateStartsWith (query , document );
75+ return ;
7076 case ENDS_WITH :
71- predicateLike (query , document , params );
77+ predicateEndsWith (query , document );
7278 return ;
7379 case NOT :
7480 query .append (" NOT " );
@@ -138,13 +144,33 @@ protected void predicate(StringBuilder query,
138144 }
139145
140146 protected void predicateLike (StringBuilder query ,
141- Element document ,
142- List <FieldValue > params ) {
147+ Element document ) {
143148 String name = identifierOf (document .name ());
144149 Object value = OracleNoSqlLikeConverter .INSTANCE .convert (document .get ());
145150 query .append ("regex_like(" ).append (name ).append (", \" " ).append (value ).append ("\" )" );
146151 }
147152
153+ protected void predicateStartsWith (StringBuilder query ,
154+ Element document ) {
155+ String name = identifierOf (document .name ());
156+ var value = document .get () == null ? "" : document .get (String .class );
157+ query .append ("regex_like(" ).append (name ).append (", \" " ).append (value ).append ("*" ).append ("\" )" );
158+ }
159+
160+ protected void predicateEndsWith (StringBuilder query ,
161+ Element document ) {
162+ String name = identifierOf (document .name ());
163+ var value = document .get () == null ? "" : document .get (String .class );
164+ query .append ("regex_like(" ).append (name ).append (", \" " ).append ("*" ).append (value ).append ("\" )" );
165+ }
166+
167+ protected void predicateContains (StringBuilder query ,
168+ Element document ) {
169+ String name = identifierOf (document .name ());
170+ var value = document .get () == null ? "" : document .get (String .class );
171+ query .append ("regex_like(" ).append (name ).append (", \" " ).append ("*" ).append (value ).append ("*" ).append ("\" )" );
172+ }
173+
148174 protected String identifierOf (String name ) {
149175 return ' ' + table + "." + JSON_FIELD + "." + name + ' ' ;
150176 }
0 commit comments