private String underscoreName(String name) {
        if (!StringUtils.hasLength(name)) {
            return "";
        }
        StringBuilder result = new StringBuilder();
        result.append(name.substring(0, 1)
                .toLowerCase());
        for (int i = 1; i < name.length(); i++) {
            String s = name.substring(i, i + 1);
            String slc = s.toLowerCase();
            if (!s.equals(slc)) {
                result.append("_")
                        .append(slc);
            } else {
                result.append(s);
            }
        }
        return result.toString();
    }
private String underscoreName(String name) {
        if (!StringUtils.hasLength(name)) {
            return "";
        }
        StringBuilder result = new StringBuilder();
        result.append(name.substring(0, 1)
                .toLowerCase());
        for (int i = 1; i < name.length(); i++) {
            String s = name.substring(i, i + 1);
            String slc = s.toLowerCase();
            if (!s.equals(slc)) {
                result.append("_")
                        .append(slc);
            } else {
                result.append(s);
            }
        }
        return result.toString();
    }
private String underscoreName ( String name ) { if ( ! StringUtils . hasLength ( name ) ) { return "" ; } StringBuilder result = new StringBuilder ( ) ; result . append ( name . substring ( 0 , 1 ) . toLowerCase ( ) ) ; for ( int i = 1 ; i < name . length ( ) ; i ++ ) { String s = name . substring ( i , i + 1 ) ; String slc = s . toLowerCase ( ) ; if ( ! s . equals ( slc ) ) { result . append ( "_" ) . append ( slc ) ; } else { result . append ( s ) ; } } return result . toString ( ) ; }
{@see org.springframework.jdbc.core.BeanPropertyRowMapper#un}
Convert a name in camelCase to an underscored name in lower case.
Any upper case letters are converted to lower case with a preceding underscore.

@param name the string containing original name
@return the converted name
{ @see org . springframework . jdbc . core . BeanPropertyRowMapper#un } Convert a name in camelCase to an underscored name in lower case . Any upper case letters are converted to lower case with a preceding underscore .