[ 
https://issues.apache.org/jira/browse/DBUTILS-91?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13407882#comment-13407882
 ] 

Stevo Slavic commented on DBUTILS-91:
-------------------------------------

Here is sample code that I currently (commons-dbutils:commons-dbutils:1.4:jar) 
have to use to override column to property name mapping:

{code}
final Map<String, String> columnToPropertyOverrides = new HashMap<>();
columnToPropertyOverrides.put("foo", "bar");
ResultSetHandler<List<Acme>> rsh = new BeanListHandler<Acme>(Acme.class, new 
BasicRowProcessor(new BeanProcessor() {
        @Override
        protected int[] mapColumnsToProperties(ResultSetMetaData rsmd,
                        PropertyDescriptor[] props) throws SQLException {
                int cols = rsmd.getColumnCount();
                int[] columnToProperty = new int[cols + 1];
                Arrays.fill(columnToProperty, PROPERTY_NOT_FOUND);

                for (int col = 1; col <= cols; col++) {
                        String columnName = rsmd.getColumnLabel(col);
                        if (null == columnName || 0 == columnName.length()) {
                          columnName = rsmd.getColumnName(col);
                        }
                        for (int i = 0; i < props.length; i++) {

                                String propertyName = 
columnToPropertyOverrides.get(columnName);
                                if (propertyName == null) {
                                        propertyName = columnName;
                                }
                                if 
(propertyName.equalsIgnoreCase(props[i].getName())) {
                                        columnToProperty[col] = i;
                                        break;
                                }
                        }
                }

                return columnToProperty;
        }
}));
{code}
                
> Enhance BasicRowProcessor to have row mapping easier to configure
> -----------------------------------------------------------------
>
>                 Key: DBUTILS-91
>                 URL: https://issues.apache.org/jira/browse/DBUTILS-91
>             Project: Commons DbUtils
>          Issue Type: Improvement
>    Affects Versions: 1.4
>            Reporter: Stevo Slavic
>
> {{BasicRowProcessor}} by default makes use of {{BeanProcessor}} for mapping 
> result set row columns to bean property names. {{BeanProcessor}} uses bean 
> property names, and performs case-insensitive matching of those names to 
> column names.
> Currently {{BasicRowProcessor}} can be configured with custom 
> {{BeanProcessor}} extension to customize the row mapping, but it gets rather 
> ugly.
> It would be great if {{BeanProcessor}} was configurable with column name to 
> bean property name strategy. Besides current strategy, DbUtils should also 
> bundle strategy implementation configurable with a property name to column 
> name (or other way around) map.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to