diff --git a/extra/src/main/java/tk/mybatis/mapper/additional/update/force/UpdateByPrimaryKeySelectiveForceMapper.java b/extra/src/main/java/tk/mybatis/mapper/additional/update/force/UpdateByPrimaryKeySelectiveForceMapper.java index b2e431ecd..8882f5008 100644 --- a/extra/src/main/java/tk/mybatis/mapper/additional/update/force/UpdateByPrimaryKeySelectiveForceMapper.java +++ b/extra/src/main/java/tk/mybatis/mapper/additional/update/force/UpdateByPrimaryKeySelectiveForceMapper.java @@ -22,4 +22,13 @@ public interface UpdateByPrimaryKeySelectiveForceMapper { */ @UpdateProvider(type = UpdateByPrimaryKeySelectiveForceProvider.class, method = "dynamicSQL") int updateByPrimaryKeySelectiveForce(@Param("record") T record, @Param("forceUpdateProperties") List forceUpdateProperties); + + /** + * 根据主键更新属性的值, 指定的属性(null值)会被强制更新 + * @param record + * @param forceUpdateProperties + * @return + */ + @UpdateProvider(type = UpdateByPrimaryKeySelectiveForceProvider.class, method = "dynamicSQL") + int updateByPrimaryKeyForce(@Param("record") T record, @Param("forceUpdateProperties") List forceUpdateProperties); } diff --git a/extra/src/main/java/tk/mybatis/mapper/additional/update/force/UpdateByPrimaryKeySelectiveForceProvider.java b/extra/src/main/java/tk/mybatis/mapper/additional/update/force/UpdateByPrimaryKeySelectiveForceProvider.java index 87d513dba..e76dd24bc 100644 --- a/extra/src/main/java/tk/mybatis/mapper/additional/update/force/UpdateByPrimaryKeySelectiveForceProvider.java +++ b/extra/src/main/java/tk/mybatis/mapper/additional/update/force/UpdateByPrimaryKeySelectiveForceProvider.java @@ -51,7 +51,7 @@ public UpdateByPrimaryKeySelectiveForceProvider(Class mapperClass, MapperHelp public String updateByPrimaryKeySelectiveForce(MappedStatement ms) { - Class entityClass = getEntityClass(ms); + Class entityClass = getEntityClass(ms); StringBuilder sql = new StringBuilder(); sql.append(SqlHelper.updateTable(entityClass, tableName(entityClass), "record")); sql.append(this.updateSetColumnsForce(entityClass, "record", true, isNotEmpty())); @@ -59,7 +59,17 @@ public String updateByPrimaryKeySelectiveForce(MappedStatement ms) { return sql.toString(); } + + public String updateByPrimaryKeyForce(MappedStatement ms) { + Class entityClass = getEntityClass(ms); + StringBuilder sql = new StringBuilder(); + sql.append(SqlHelper.updateTable(entityClass, tableName(entityClass), "record")); + sql.append(this.updateSetColumnsForce(entityClass, "record", false, false)); + sql.append(SqlHelper.wherePKColumns(entityClass, "record", true)); + return sql.toString(); + } + /** * update set列 * @@ -93,10 +103,8 @@ public String updateSetColumnsForce(Class entityClass, String entityName, boo .append(" = ${@tk.mybatis.mapper.version.VersionUtil@nextVersion(") .append("@").append(versionClass).append("@class, ") .append(column.getProperty()).append(")},"); - } else if (notNull) { - sql.append(this.getIfNotNull(entityName, column, column.getColumnEqualsHolder(entityName) + ",", notEmpty)); } else { - sql.append(column.getColumnEqualsHolder(entityName) + ","); + sql.append(this.getIf(entityName, column, column.getColumnEqualsHolder(entityName) + ",", notNull, notEmpty)); } } } @@ -105,32 +113,34 @@ public String updateSetColumnsForce(Class entityClass, String entityName, boo } /** - * 判断自动!=null的条件结构 - * + * 判断条件结构 * @param entityName * @param column * @param contents + * @param notNull * @param empty * @return */ - public String getIfNotNull(String entityName, EntityColumn column, String contents, boolean empty) { + public String getIf(String entityName, EntityColumn column, String contents, boolean notNull, boolean empty) { StringBuilder sql = new StringBuilder(); sql.append(""); - sql.append(""); + sql.append(contents); + sql.append(""); } - sql.append("\">"); - sql.append(contents); - sql.append(""); //指定的字段会被强制更新 sql.append("