All Downloads are FREE. Search and download functionalities are using the official Maven repository.

pers.zr.opensource.magic.dao.mapper.MapperContextHolder Maven / Gradle / Ivy

There is a newer version: 1.0.1
Show newest version
package pers.zr.opensource.magic.dao.mapper;

import org.springframework.jdbc.core.RowMapper;
import pers.zr.opensource.magic.dao.constants.MethodType;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;

/**
 * Created by Administrator on 2016/5/21.
 */
public class MapperContextHolder {

    /** class-rowMapper*/
    private static Map, RowMapper> rowMapperMap = new HashMap, RowMapper>();

    /** class-field-setMethod*/
    private static Map, Map> settersMap = new HashMap, Map>();

    /** class-field-getMethod*/
    private static Map, Map> gettersMap = new HashMap, Map>();

    /** class-column-field*/
    private static Map, Map> fieldsMap = new HashMap, Map>();

    public static void setRowMapper(Class clazz, RowMapper rowMapper) {
        rowMapperMap.put(clazz, rowMapper);
    }

    public static RowMapper getRowMapper(Class clazz) {
        return rowMapperMap.get(clazz);
    }

    public static void setFieldWithColumn(Class clazz, String column, Field field) {
        Map colFieldMap = fieldsMap.get(clazz);
        if(null == colFieldMap) {
            colFieldMap = new HashMap();
            fieldsMap.put(clazz, colFieldMap);
        }
        colFieldMap.put(column, field);
    }

    public static Field getFieldWithColumn(Class clazz, String column) {
        Field field = null;
        Map colFieldMap = fieldsMap.get(clazz);
        if(null != colFieldMap) {
            field = colFieldMap.get(column);
        }
        return field;
    }

    public static Method getMethod(Class clazz, Field field, MethodType type) {
        Method method = null;
        Map methodMap = getMethodMap(clazz, field, type);
        if(methodMap != null) {
            method = methodMap.get(field);
        }
        return method;

    }

    public static void setMethod(Class clazz, Field field, Method method, MethodType type) {
        Map methodMap = getMethodMap(clazz, field, type);
        if(methodMap == null) {
            methodMap = new HashMap();
            if(MethodType.GET.equals(type)) {
                gettersMap.put(clazz, methodMap);

            }else if(MethodType.SET.equals(type)) {
                settersMap.put(clazz, methodMap);

            }else {
                throw new RuntimeException("Invalid Method type");
            }

        }
        methodMap.put(field, method);
    }


    private static Map getMethodMap(Class clazz, Field field, MethodType type) {
        Map methodMap;
        if(MethodType.GET.equals(type)) {
            methodMap = gettersMap.get(clazz);

        }else if(MethodType.SET.equals(type)) {
            methodMap = settersMap.get(clazz);

        }else {
            throw new RuntimeException("Invalid Method type");
        }

        return methodMap;
    }


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy