code: public static <T> String getUpdateAllSQL(Class<T> clazz, String setSql, String whereSql,
  			String extraWhereSql) {
  		StringBuilder sql = new StringBuilder();
  		sql.append("UPDATE ");
  		
  		Table table = DOInfoReader.getTable(clazz);
  		List<Field> fields = DOInfoReader.getColumns(clazz);
  		
  		sql.append(getTableName(table)).append(" ");
  		
  		if(setSql.trim().toLowerCase().startsWith("set ")) {
  			sql.append(setSql);
  		} else {
  			sql.append("SET ").append(setSql);
  		}
  		
  		// 加上更新时间
  		for(Field field : fields) {
  			Column column = field.getAnnotation(Column.class);
  			if(column.setTimeWhenUpdate() && Date.class.isAssignableFrom(field.getType())) {
  				sql.append(",").append(getColumnName(column))
  				   .append("=").append(getDateString(new Date()));
  			}
  		}
  		
  		sql.append(autoSetSoftDeleted(whereSql, clazz, extraWhereSql));
  		return sql.toString();
  	}
docs: 获得批量更新sql
  @param clazz
  @param setSql
  @param whereSql
  @param extraWhereSql 会放在最后，以满足update子select语句的要求
  @return