SpringJDBC之RowMapper通用类

        SpringJDBC无疑极大的方便了我们访问数据库,但是有一个小问题,每次查询操作返回的实体对象不一样,难道我们每次都要重新实现RowMapper吗?利用泛型,可以方便处理这样的操作。

        开发环境:Windows10、eclipse、SpringJDBC4.3.7。文末含项目源码下载链接

1、自我实现RowMapper

/*
 * 文件名:LocalRowMapper.java
 * 版权:Copyright 2007-2017 517na Tech. Co. Ltd. All Rights Reserved. 
 * 描述: LocalRowMapper.java
 * 修改人:xiaofan
 * 修改时间:2017年3月19日
 * 修改内容:新增
 */
package com.zxiaofan.dubboProvidder.rowMapper;

import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.Date;
import java.util.HashMap;

import org.springframework.jdbc.core.RowMapper;

/**
 * 
 * @author xiaofan
 */
public class LocalRowMapper<T> implements RowMapper<T> {

    /**
     * 添加字段注释.
     */
    private Class<?> targetClazz;

    /**
     * 添加字段注释.
     */
    private HashMap<String, Field> fieldMap;

    /**
     * 构造函数.
     * 
     * @param targetClazz
     *            .
     */
    public LocalRowMapper(Class<?> targetClazz) {
        this.targetClazz = targetClazz;
        fieldMap = new HashMap<>();
        Field[] fields = targetClazz.getDeclaredFields();
        for (Field field : fields) {
            // 同时存入大小写,如果表中列名区分大小写且有列ID和列iD,则会出现异常。
            // 阿里开发公约,建议表名、字段名必须使用小写字母或数字;禁止出现数字开头,禁止两个下划线中间只出现数字。
            fieldMap.put(field.getName(), field);
            // fieldMap.put(getFieldNameUpper(field.getName()), field);
        }
    }

    /**
     * {@inheritDoc}.
     */
    @Override
    public T mapRow(ResultSet rs, int arg1) throws SQLException {
        T obj = null;

        try {
            obj = (T) targetClazz.newInstance();

            final ResultSetMetaData metaData = rs.getMetaData();
            int columnLength = metaData.getColumnCount();
            String columnName = null;

            for (int i = 1; i <= columnLength; i++) {
                columnName = metaData.getColumnName(i);
                Class fieldClazz = fieldMap.get(columnName).getType();
                Field fiel
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值