public static List<? extends PersonAttributeDao> newJdbcAttributeRepositoryDao(final List<JdbcPrincipalAttributesProperties> properties) {
        return properties
            .stream()
            .filter(jdbc -> StringUtils.isNotBlank(jdbc.getSql()) && StringUtils.isNotBlank(jdbc.getUrl()))
            .map(jdbc -> {
                val jdbcDao = createJdbcPersonAttributeDao(jdbc);
                FunctionUtils.doIfNotNull(jdbc.getId(), id -> jdbcDao.setId(id));

                val queryAttributes = CollectionUtils.wrap("username", jdbc.getUsername());
                queryAttributes.putAll(jdbc.getQueryAttributes());
                jdbcDao.setQueryAttributeMapping(queryAttributes);

                val mapping = jdbc.getAttributes();
                if (mapping != null && !mapping.isEmpty()) {
                    LOGGER.debug("Configured result attribute mapping for [{}] to be [{}]", jdbc.getUrl(), jdbc.getAttributes());
                    jdbcDao.setResultAttributeMapping(mapping);
                }
                jdbcDao.setRequireAllQueryAttributes(jdbc.isRequireAllAttributes());

                val caseMode = CaseCanonicalizationMode.valueOf(jdbc.getCaseCanonicalization().toUpperCase(Locale.ENGLISH));
                jdbcDao.setUsernameCaseCanonicalizationMode(caseMode);
                jdbcDao.setDefaultCaseCanonicalizationMode(caseMode);
                jdbcDao.setQueryType(QueryType.valueOf(jdbc.getQueryType().toUpperCase(Locale.ENGLISH)));
                jdbcDao.setOrder(jdbc.getOrder());
                jdbcDao.setEnabled(jdbc.getState() != AttributeRepositoryStates.DISABLED);
                jdbcDao.putTag("state", jdbc.getState());
                return jdbcDao;
            })
            .toList();
    }
New jdbc attribute repository dao list.

@param properties the properties
@return the list
support/cas-server-support-jdbc-authentication/src/main/java/org/apereo/cas/jdbc/JdbcPersonAttributeUtils.java