@@ -476,7 +476,7 @@ public Example<T> set(String setSql) {
476
476
*/
477
477
public Example <T > set (Fn <T , Object > fn , Object value ) {
478
478
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 ));
480
480
return this ;
481
481
}
482
482
@@ -545,11 +545,11 @@ protected void addCriterion(String condition, Object value) {
545
545
criteria .add (new Criterion (condition , value ));
546
546
}
547
547
548
- protected void addCriterion (String condition , Object value , Class <? extends TypeHandler > typeHandler ) {
548
+ protected void addCriterion (String condition , Object value , EntityColumn column ) {
549
549
if (value == null ) {
550
550
throw new RuntimeException ("Value for " + condition + " cannot be null" );
551
551
}
552
- criteria .add (new Criterion (condition , value , typeHandler ));
552
+ criteria .add (new Criterion (condition , value , column ));
553
553
}
554
554
555
555
protected void addCriterion (String condition , Object value1 , Object value2 ) {
@@ -559,11 +559,11 @@ protected void addCriterion(String condition, Object value1, Object value2) {
559
559
criteria .add (new Criterion (condition , value1 , value2 ));
560
560
}
561
561
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 ) {
563
563
if (value1 == null || value2 == null ) {
564
564
throw new RuntimeException ("Between values for " + condition + " cannot be null" );
565
565
}
566
- criteria .add (new Criterion (condition , value1 , value2 , typeHandler ));
566
+ criteria .add (new Criterion (condition , value1 , value2 , column ));
567
567
}
568
568
569
569
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
590
590
591
591
public Criteria <T > andEqualTo (Fn <T , Object > fn , Object value ) {
592
592
if (useCriterion (value )) {
593
- addCriterion (column (fn ) + " =" , value , typehandler ( fn ));
593
+ addCriterion (column (fn ) + " =" , value , fn . toEntityColumn ( ));
594
594
}
595
595
return (Criteria <T >) this ;
596
596
}
@@ -601,7 +601,7 @@ public Criteria<T> andNotEqualTo(boolean useCondition, Fn<T, Object> fn, Object
601
601
602
602
public Criteria <T > andNotEqualTo (Fn <T , Object > fn , Object value ) {
603
603
if (useCriterion (value )) {
604
- addCriterion (column (fn ) + " <>" , value , typehandler ( fn ));
604
+ addCriterion (column (fn ) + " <>" , value , fn . toEntityColumn ( ));
605
605
}
606
606
return (Criteria <T >) this ;
607
607
}
@@ -612,7 +612,7 @@ public Criteria<T> andGreaterThan(boolean useCondition, Fn<T, Object> fn, Object
612
612
613
613
public Criteria <T > andGreaterThan (Fn <T , Object > fn , Object value ) {
614
614
if (useCriterion (value )) {
615
- addCriterion (column (fn ) + " >" , value , typehandler ( fn ));
615
+ addCriterion (column (fn ) + " >" , value , fn . toEntityColumn ( ));
616
616
}
617
617
return (Criteria <T >) this ;
618
618
}
@@ -623,7 +623,7 @@ public Criteria<T> andGreaterThanOrEqualTo(boolean useCondition, Fn<T, Object> f
623
623
624
624
public Criteria <T > andGreaterThanOrEqualTo (Fn <T , Object > fn , Object value ) {
625
625
if (useCriterion (value )) {
626
- addCriterion (column (fn ) + " >=" , value , typehandler ( fn ));
626
+ addCriterion (column (fn ) + " >=" , value , fn . toEntityColumn ( ));
627
627
}
628
628
return (Criteria <T >) this ;
629
629
}
@@ -634,7 +634,7 @@ public Criteria<T> andLessThan(boolean useCondition, Fn<T, Object> fn, Object va
634
634
635
635
public Criteria <T > andLessThan (Fn <T , Object > fn , Object value ) {
636
636
if (useCriterion (value )) {
637
- addCriterion (column (fn ) + " <" , value , typehandler ( fn ));
637
+ addCriterion (column (fn ) + " <" , value , fn . toEntityColumn ( ));
638
638
}
639
639
return (Criteria <T >) this ;
640
640
}
@@ -645,7 +645,7 @@ public Criteria<T> andLessThanOrEqualTo(boolean useCondition, Fn<T, Object> fn,
645
645
646
646
public Criteria <T > andLessThanOrEqualTo (Fn <T , Object > fn , Object value ) {
647
647
if (useCriterion (value )) {
648
- addCriterion (column (fn ) + " <=" , value , typehandler ( fn ));
648
+ addCriterion (column (fn ) + " <=" , value , fn . toEntityColumn ( ));
649
649
}
650
650
return (Criteria <T >) this ;
651
651
}
@@ -657,7 +657,7 @@ public Criteria<T> andIn(boolean useCondition, Fn<T, Object> fn, Iterable values
657
657
@ SuppressWarnings ("rawtypes" )
658
658
public Criteria <T > andIn (Fn <T , Object > fn , Iterable values ) {
659
659
if (useCriterion (values )) {
660
- addCriterion (column (fn ) + " IN" , values , typehandler ( fn ));
660
+ addCriterion (column (fn ) + " IN" , values , fn . toEntityColumn ( ));
661
661
}
662
662
return (Criteria <T >) this ;
663
663
}
@@ -669,7 +669,7 @@ public Criteria<T> andNotIn(boolean useCondition, Fn<T, Object> fn, Iterable val
669
669
@ SuppressWarnings ("rawtypes" )
670
670
public Criteria <T > andNotIn (Fn <T , Object > fn , Iterable values ) {
671
671
if (useCriterion (values )) {
672
- addCriterion (column (fn ) + " NOT IN" , values , typehandler ( fn ));
672
+ addCriterion (column (fn ) + " NOT IN" , values , fn . toEntityColumn ( ));
673
673
}
674
674
return (Criteria <T >) this ;
675
675
}
@@ -680,7 +680,7 @@ public Criteria<T> andBetween(boolean useCondition, Fn<T, Object> fn, Object val
680
680
681
681
public Criteria <T > andBetween (Fn <T , Object > fn , Object value1 , Object value2 ) {
682
682
if (useCriterion (value1 ) && useCriterion (value2 )) {
683
- addCriterion (column (fn ) + " BETWEEN" , value1 , value2 , typehandler ( fn ));
683
+ addCriterion (column (fn ) + " BETWEEN" , value1 , value2 , fn . toEntityColumn ( ));
684
684
}
685
685
return (Criteria <T >) this ;
686
686
}
@@ -691,7 +691,7 @@ public Criteria<T> andNotBetween(boolean useCondition, Fn<T, Object> fn, Object
691
691
692
692
public Criteria <T > andNotBetween (Fn <T , Object > fn , Object value1 , Object value2 ) {
693
693
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 ( ));
695
695
}
696
696
return (Criteria <T >) this ;
697
697
}
@@ -702,7 +702,7 @@ public Criteria<T> andLike(boolean useCondition, Fn<T, Object> fn, Object value)
702
702
703
703
public Criteria <T > andLike (Fn <T , Object > fn , Object value ) {
704
704
if (useCriterion (value )) {
705
- addCriterion (column (fn ) + " LIKE" , value , typehandler ( fn ));
705
+ addCriterion (column (fn ) + " LIKE" , value , fn . toEntityColumn ( ));
706
706
}
707
707
return (Criteria <T >) this ;
708
708
}
@@ -713,7 +713,7 @@ public Criteria<T> andNotLike(boolean useCondition, Fn<T, Object> fn, Object val
713
713
714
714
public Criteria <T > andNotLike (Fn <T , Object > fn , Object value ) {
715
715
if (useCriterion (value )) {
716
- addCriterion (column (fn ) + " NOT LIKE" , value , typehandler ( fn ));
716
+ addCriterion (column (fn ) + " NOT LIKE" , value , fn . toEntityColumn ( ));
717
717
}
718
718
return (Criteria <T >) this ;
719
719
}
@@ -1331,6 +1331,8 @@ public static class Criterion {
1331
1331
1332
1332
private Object secondValue ;
1333
1333
1334
+ private String javaType ;
1335
+
1334
1336
private String typeHandler ;
1335
1337
1336
1338
private boolean noValue ;
@@ -1353,11 +1355,12 @@ protected Criterion(String condition) {
1353
1355
this .noValue = true ;
1354
1356
}
1355
1357
1356
- protected Criterion (String condition , Object value , Class <? extends TypeHandler > typeHandler ) {
1358
+ protected Criterion (String condition , Object value , EntityColumn column ) {
1357
1359
super ();
1358
1360
this .condition = condition ;
1359
1361
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 ;
1361
1364
if (value instanceof Collection <?>) {
1362
1365
if (condition != null ) {
1363
1366
this .listValue = true ;
@@ -1369,12 +1372,13 @@ protected Criterion(String condition, Object value, Class<? extends TypeHandler>
1369
1372
}
1370
1373
}
1371
1374
1372
- protected Criterion (String condition , Object value , Object secondValue , Class <? extends TypeHandler > typeHandler ) {
1375
+ protected Criterion (String condition , Object value , Object secondValue , EntityColumn column ) {
1373
1376
super ();
1374
1377
this .condition = condition ;
1375
1378
this .value = value ;
1376
1379
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 ;
1378
1382
this .betweenValue = true ;
1379
1383
}
1380
1384
@@ -1385,6 +1389,9 @@ protected Criterion(String condition, Object value, Object secondValue) {
1385
1389
public String variables (String field ) {
1386
1390
StringBuilder variables = new StringBuilder ();
1387
1391
variables .append ("#{" ).append (field );
1392
+ if (javaType != null && !javaType .isEmpty ()) {
1393
+ variables .append (",javaType=" ).append (javaType );
1394
+ }
1388
1395
if (typeHandler != null && !typeHandler .isEmpty ()) {
1389
1396
variables .append (",typeHandler=" ).append (typeHandler );
1390
1397
}
0 commit comments