文档章节

DbUtils 扩展BeanProcessor的处理方式,使其能够处理如DATA_OBJECT_NAME -> dataObjectName这样的映射关系

giianhui
 giianhui
发布于 2016/05/27 11:19
字数 169
阅读 20
收藏 0
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();
    }


}

本文转载自:http://blog.csdn.net/giianhui/article/details/7751815

giianhui
粉丝 6
博文 287
码字总数 0
作品 0
深圳
技术主管
私信 提问
加载中

评论(1)

doufum
doufum
可以直接使用自带的GenerousBeanProcessor
Commons DbUtils

1 概述 Commons DBUtils类库是小型的设计于易于使用JDBC的类集合。JDBC资源清理是平凡的,容易出错,以至于这些类从你的代码中抽象出清理代码,剩下你最初真正想要使用JDBC做的代码:查询和更...

Leech
2015/07/21
430
0
DbUtils源码阅读一:初识项目

1 项目介绍 DbUtils是一个关于JDBC操作的类库。官网地址 2 项目结构 org.apache.commons.dbutils: |-AbstractQueryRunner: 抽象类 |-AsyncQueryRunner |-QueryRunner |-QueryLoader |-Proxy......

吴下阿吉
2013/02/23
639
2
03-dbutils源码之BeanProcessor、RowProcessor、BasicRo...

在dbutils中,BeanProcessor是一个很重要的类:将列和bean对象的属性进行匹配,将列的值赋予bean的对象。这个是使用了反射来进行的。 来看下类的outline: 从上图可以看出,有“创建对象”、...

mnisummer
2013/09/25
907
0
DbUtils的改进版DbUtils-Pro1.7.0发布

DbUtils-Pro是一个DbUtils的改进版,它支持多种SQL风格并改进事务管理。主要特点有: 改进DbUtils的异常处理,将SQLException转化为运行时导常抛出,无需再手工捕获异常,这点类似于Spring的...

yong9981
2017/08/31
8
0
从 java bean 的内省到 dbutils 的应用

java bean 内省的基础 java bean 的内省,其实可以算是反射的一种基础应用,关于 java 的反射,无非就是获得对应的类、属性、方法、修饰符等的应用,对于 java 的反射探讨,可以点击参考 ja...

peiquan
2018/07/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习之模块

1、 stub_status模块: 用于展示nginx处理连接时的状态。 配置语法如下: Syntax:stub_status;Default:默认没有配置Context:server、location 可以编辑default.conf,加上如下配置: ...

码农实战
46分钟前
4
0
MySQL,必须掌握的6个知识点

目录 一、索引B+ Tree 原理 MySQL 索引 索引优化 索引的优点 索引的使用条件 二、查询性能优化使用 Explain 进行分析 优化数据访问 重构查询方式 三、存储引擎InnoDB MyISAM 比较 四、数据类...

李红欧巴
49分钟前
4
0
堆”和“栈

C++作为一款C语言的升级版本,具有非常强大的功能。它不但能够支持各种程序设计风格,而且还具有C语言的所有功能。我们在这里为大家介绍的是其中一个比较重要的内容,C++内存区域的基本介绍。...

SibylY
今天
4
0
总结:Https

一、介绍 简单理解,https即在http协议的基础上,增加了SSL协议,保障数据传输的安全性。 它由以前的http—–>tcp,改为http——>SSL—–>tcp;https采用了共享密钥加密+公开密钥加密的方式 ...

浮躁的码农
今天
6
0
数据库表与表之间的一对一、一对多、多对多关系

表1 foreign key 表2 多对一:表 1 的多条记录对应表 2 的一条记录 利用foreign key的原理我们可以制作两张表的多对多,一对一关系 多对多: 表1的多条记录可以对应表2的一条记录 表2的多条记...

Garphy
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部