DbUtils 擴充BeanProcessor的處理方式,使其能夠處理如DATA_OBJECT_NAME -> dataObjectName這樣的映射關係

來源:互聯網
上載者:User

package com.moya.tool;

import java.beans.PropertyDescriptor;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.Arrays;

import org.apache.commons.dbutils.BeanProcessor;
import org.apache.commons.lang3.StringUtils;
/**
 * 擴充BeanProcessor的處理方式,使其能夠處理如DATA_OBJECT_NAME -> dataObjectName這樣的映射關係 */

public class GenBeanProcess extends BeanProcessor {
/**
     * 替換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.getColumnLabel(col);
                    }
                    for (int i = 0; i < props.length; i++) {
                            if (convert(columnName).equals(props[i].getName())) {
                                    columnToProperty[col] = i;
                                    break;
                            }
                    }
            }
            return columnToProperty;
    }        /**
     * DATA_OBJECT_NAME -> dataObjectName
     */
    private String convert(String objName) {
            StringBuilder result = new StringBuilder();
            String[] tokens = objName.split("_");
            for (String token : tokens) {
                    if (result.length() == 0)
                            result.append(token.toLowerCase());
                    else
                            result.append(StringUtils.capitalize(token.toLowerCase()));
            }
            return result.toString();
    }

}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.