@@ -511,6 +511,44 @@ public static String updateSetColumns(Class<?> entityClass, String entityName, b
511
511
return sql .toString ();
512
512
}
513
513
514
+ /**
515
+ * update set列,不考虑乐观锁注解 @Version
516
+ *
517
+ * @param entityClass
518
+ * @param entityName 实体映射名
519
+ * @param notNull 是否判断!=null
520
+ * @param notEmpty 是否判断String类型!=''
521
+ * @return
522
+ */
523
+ public static String updateSetColumnsIgnoreVersion (Class <?> entityClass , String entityName , boolean notNull , boolean notEmpty ) {
524
+ StringBuilder sql = new StringBuilder ();
525
+ sql .append ("<set>" );
526
+ //获取全部列
527
+ Set <EntityColumn > columnSet = EntityHelper .getColumns (entityClass );
528
+ // 逻辑删除列
529
+ EntityColumn logicDeleteColumn = null ;
530
+ //当某个列有主键策略时,不需要考虑他的属性是否为空,因为如果为空,一定会根据主键策略给他生成一个值
531
+ for (EntityColumn column : columnSet ) {
532
+ if (column .getEntityField ().isAnnotationPresent (LogicDelete .class )) {
533
+ if (logicDeleteColumn != null ) {
534
+ throw new LogicDeleteException (entityClass .getCanonicalName () + " 中包含多个带有 @LogicDelete 注解的字段,一个类中只能存在一个带有 @LogicDelete 注解的字段!" );
535
+ }
536
+ logicDeleteColumn = column ;
537
+ }
538
+ if (!column .isId () && column .isUpdatable ()) {
539
+ if (column == logicDeleteColumn ) {
540
+ sql .append (logicDeleteColumnEqualsValue (column , false )).append ("," );
541
+ } else if (notNull ) {
542
+ sql .append (SqlHelper .getIfNotNull (entityName , column , column .getColumnEqualsHolder (entityName ) + "," , notEmpty ));
543
+ } else {
544
+ sql .append (column .getColumnEqualsHolder (entityName ) + "," );
545
+ }
546
+ }
547
+ }
548
+ sql .append ("</set>" );
549
+ return sql .toString ();
550
+ }
551
+
514
552
/**
515
553
* 不是所有参数都是 null 的检查
516
554
*
0 commit comments