@@ -476,7 +476,7 @@ public Example<T> set(String setSql) {
476476 */
477477 public Example <T > set (Fn <T , Object > fn , Object value ) {
478478 EntityColumn column = fn .toEntityColumn ();
479- this .setValues .add (new Criterion (column .column (), value , column . typeHandler () ));
479+ this .setValues .add (new Criterion (column .column (), value , column ));
480480 return this ;
481481 }
482482
@@ -545,11 +545,11 @@ protected void addCriterion(String condition, Object value) {
545545 criteria .add (new Criterion (condition , value ));
546546 }
547547
548- protected void addCriterion (String condition , Object value , Class <? extends TypeHandler > typeHandler ) {
548+ protected void addCriterion (String condition , Object value , EntityColumn column ) {
549549 if (value == null ) {
550550 throw new RuntimeException ("Value for " + condition + " cannot be null" );
551551 }
552- criteria .add (new Criterion (condition , value , typeHandler ));
552+ criteria .add (new Criterion (condition , value , column ));
553553 }
554554
555555 protected void addCriterion (String condition , Object value1 , Object value2 ) {
@@ -559,11 +559,11 @@ protected void addCriterion(String condition, Object value1, Object value2) {
559559 criteria .add (new Criterion (condition , value1 , value2 ));
560560 }
561561
562- protected void addCriterion (String condition , Object value1 , Object value2 , Class <? extends TypeHandler > typeHandler ) {
562+ protected void addCriterion (String condition , Object value1 , Object value2 , EntityColumn column ) {
563563 if (value1 == null || value2 == null ) {
564564 throw new RuntimeException ("Between values for " + condition + " cannot be null" );
565565 }
566- criteria .add (new Criterion (condition , value1 , value2 , typeHandler ));
566+ criteria .add (new Criterion (condition , value1 , value2 , column ));
567567 }
568568
569569 public Criteria <T > andIsNull (boolean useCondition , Fn <T , Object > fn ) {
@@ -590,7 +590,7 @@ public Criteria<T> andEqualTo(boolean useCondition, Fn<T, Object> fn, Object val
590590
591591 public Criteria <T > andEqualTo (Fn <T , Object > fn , Object value ) {
592592 if (useCriterion (value )) {
593- addCriterion (column (fn ) + " =" , value , typehandler ( fn ));
593+ addCriterion (column (fn ) + " =" , value , fn . toEntityColumn ( ));
594594 }
595595 return (Criteria <T >) this ;
596596 }
@@ -601,7 +601,7 @@ public Criteria<T> andNotEqualTo(boolean useCondition, Fn<T, Object> fn, Object
601601
602602 public Criteria <T > andNotEqualTo (Fn <T , Object > fn , Object value ) {
603603 if (useCriterion (value )) {
604- addCriterion (column (fn ) + " <>" , value , typehandler ( fn ));
604+ addCriterion (column (fn ) + " <>" , value , fn . toEntityColumn ( ));
605605 }
606606 return (Criteria <T >) this ;
607607 }
@@ -612,7 +612,7 @@ public Criteria<T> andGreaterThan(boolean useCondition, Fn<T, Object> fn, Object
612612
613613 public Criteria <T > andGreaterThan (Fn <T , Object > fn , Object value ) {
614614 if (useCriterion (value )) {
615- addCriterion (column (fn ) + " >" , value , typehandler ( fn ));
615+ addCriterion (column (fn ) + " >" , value , fn . toEntityColumn ( ));
616616 }
617617 return (Criteria <T >) this ;
618618 }
@@ -623,7 +623,7 @@ public Criteria<T> andGreaterThanOrEqualTo(boolean useCondition, Fn<T, Object> f
623623
624624 public Criteria <T > andGreaterThanOrEqualTo (Fn <T , Object > fn , Object value ) {
625625 if (useCriterion (value )) {
626- addCriterion (column (fn ) + " >=" , value , typehandler ( fn ));
626+ addCriterion (column (fn ) + " >=" , value , fn . toEntityColumn ( ));
627627 }
628628 return (Criteria <T >) this ;
629629 }
@@ -634,7 +634,7 @@ public Criteria<T> andLessThan(boolean useCondition, Fn<T, Object> fn, Object va
634634
635635 public Criteria <T > andLessThan (Fn <T , Object > fn , Object value ) {
636636 if (useCriterion (value )) {
637- addCriterion (column (fn ) + " <" , value , typehandler ( fn ));
637+ addCriterion (column (fn ) + " <" , value , fn . toEntityColumn ( ));
638638 }
639639 return (Criteria <T >) this ;
640640 }
@@ -645,7 +645,7 @@ public Criteria<T> andLessThanOrEqualTo(boolean useCondition, Fn<T, Object> fn,
645645
646646 public Criteria <T > andLessThanOrEqualTo (Fn <T , Object > fn , Object value ) {
647647 if (useCriterion (value )) {
648- addCriterion (column (fn ) + " <=" , value , typehandler ( fn ));
648+ addCriterion (column (fn ) + " <=" , value , fn . toEntityColumn ( ));
649649 }
650650 return (Criteria <T >) this ;
651651 }
@@ -657,7 +657,7 @@ public Criteria<T> andIn(boolean useCondition, Fn<T, Object> fn, Iterable values
657657 @ SuppressWarnings ("rawtypes" )
658658 public Criteria <T > andIn (Fn <T , Object > fn , Iterable values ) {
659659 if (useCriterion (values )) {
660- addCriterion (column (fn ) + " IN" , values , typehandler ( fn ));
660+ addCriterion (column (fn ) + " IN" , values , fn . toEntityColumn ( ));
661661 }
662662 return (Criteria <T >) this ;
663663 }
@@ -669,7 +669,7 @@ public Criteria<T> andNotIn(boolean useCondition, Fn<T, Object> fn, Iterable val
669669 @ SuppressWarnings ("rawtypes" )
670670 public Criteria <T > andNotIn (Fn <T , Object > fn , Iterable values ) {
671671 if (useCriterion (values )) {
672- addCriterion (column (fn ) + " NOT IN" , values , typehandler ( fn ));
672+ addCriterion (column (fn ) + " NOT IN" , values , fn . toEntityColumn ( ));
673673 }
674674 return (Criteria <T >) this ;
675675 }
@@ -680,7 +680,7 @@ public Criteria<T> andBetween(boolean useCondition, Fn<T, Object> fn, Object val
680680
681681 public Criteria <T > andBetween (Fn <T , Object > fn , Object value1 , Object value2 ) {
682682 if (useCriterion (value1 ) && useCriterion (value2 )) {
683- addCriterion (column (fn ) + " BETWEEN" , value1 , value2 , typehandler ( fn ));
683+ addCriterion (column (fn ) + " BETWEEN" , value1 , value2 , fn . toEntityColumn ( ));
684684 }
685685 return (Criteria <T >) this ;
686686 }
@@ -691,7 +691,7 @@ public Criteria<T> andNotBetween(boolean useCondition, Fn<T, Object> fn, Object
691691
692692 public Criteria <T > andNotBetween (Fn <T , Object > fn , Object value1 , Object value2 ) {
693693 if (useCriterion (value1 ) && useCriterion (value2 )) {
694- addCriterion (column (fn ) + " NOT BETWEEN" , value1 , value2 , typehandler ( fn ));
694+ addCriterion (column (fn ) + " NOT BETWEEN" , value1 , value2 , fn . toEntityColumn ( ));
695695 }
696696 return (Criteria <T >) this ;
697697 }
@@ -702,7 +702,7 @@ public Criteria<T> andLike(boolean useCondition, Fn<T, Object> fn, Object value)
702702
703703 public Criteria <T > andLike (Fn <T , Object > fn , Object value ) {
704704 if (useCriterion (value )) {
705- addCriterion (column (fn ) + " LIKE" , value , typehandler ( fn ));
705+ addCriterion (column (fn ) + " LIKE" , value , fn . toEntityColumn ( ));
706706 }
707707 return (Criteria <T >) this ;
708708 }
@@ -713,7 +713,7 @@ public Criteria<T> andNotLike(boolean useCondition, Fn<T, Object> fn, Object val
713713
714714 public Criteria <T > andNotLike (Fn <T , Object > fn , Object value ) {
715715 if (useCriterion (value )) {
716- addCriterion (column (fn ) + " NOT LIKE" , value , typehandler ( fn ));
716+ addCriterion (column (fn ) + " NOT LIKE" , value , fn . toEntityColumn ( ));
717717 }
718718 return (Criteria <T >) this ;
719719 }
@@ -1331,6 +1331,8 @@ public static class Criterion {
13311331
13321332 private Object secondValue ;
13331333
1334+ private String javaType ;
1335+
13341336 private String typeHandler ;
13351337
13361338 private boolean noValue ;
@@ -1353,11 +1355,12 @@ protected Criterion(String condition) {
13531355 this .noValue = true ;
13541356 }
13551357
1356- protected Criterion (String condition , Object value , Class <? extends TypeHandler > typeHandler ) {
1358+ protected Criterion (String condition , Object value , EntityColumn column ) {
13571359 super ();
13581360 this .condition = condition ;
13591361 this .value = value ;
1360- this .typeHandler = typeHandler != null ? typeHandler .getName () : null ;
1362+ this .javaType = value != null ? column .javaType ().getName () : null ;
1363+ this .typeHandler = typeHandler != null ? column .typeHandler ().getName () : null ;
13611364 if (value instanceof Collection <?>) {
13621365 if (condition != null ) {
13631366 this .listValue = true ;
@@ -1369,12 +1372,13 @@ protected Criterion(String condition, Object value, Class<? extends TypeHandler>
13691372 }
13701373 }
13711374
1372- protected Criterion (String condition , Object value , Object secondValue , Class <? extends TypeHandler > typeHandler ) {
1375+ protected Criterion (String condition , Object value , Object secondValue , EntityColumn column ) {
13731376 super ();
13741377 this .condition = condition ;
13751378 this .value = value ;
13761379 this .secondValue = secondValue ;
1377- this .typeHandler = typeHandler != null ? typeHandler .getName () : null ;
1380+ this .javaType = value != null ? column .javaType ().getName () : null ;
1381+ this .typeHandler = typeHandler != null ? column .typeHandler ().getName () : null ;
13781382 this .betweenValue = true ;
13791383 }
13801384
@@ -1385,6 +1389,9 @@ protected Criterion(String condition, Object value, Object secondValue) {
13851389 public String variables (String field ) {
13861390 StringBuilder variables = new StringBuilder ();
13871391 variables .append ("#{" ).append (field );
1392+ if (javaType != null && !javaType .isEmpty ()) {
1393+ variables .append (",javaType=" ).append (javaType );
1394+ }
13881395 if (typeHandler != null && !typeHandler .isEmpty ()) {
13891396 variables .append (",typeHandler=" ).append (typeHandler );
13901397 }
0 commit comments