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

com.mybatis.jpa.meta.PersistentMeta Maven / Gradle / Ivy

package com.mybatis.jpa.meta;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import com.mybatis.jpa.annotation.CatTableFlag;
import com.mybatis.jpa.common.PersistentUtil;

/**
 * 持久化元数据类型
 *
 * @author svili
 * @data 2017年5月6日
 *
 */
public class PersistentMeta {

	/** 持久化对象 类型 */
	private Class type;

	/** 表名 */
	private String tableName;

	/** {@link javax.persistence.Entity} */
	private String entityName;

	private String flat = "";

	private String tableNameFlag;

	private boolean isCatTable = false;

	private String flagTableName = "";

	// private String primaryKey;

	/** 主键column元数据 */
	private MybatisColumnMeta primaryColumnMeta;



	/** 列名集 */
	private List columnNameCollection;

	private String columnNames;

	/** column元数据集 {key-fieldName} */
	private Map columnMetaMap;

	public PersistentMeta(Class type) {
		this.type = type;
		persistence();
	}

	private void persistence() {
		tableName = PersistentUtil.getTableName(type);
		entityName = PersistentUtil.getEntityName(type);
		primaryColumnMeta = new MybatisColumnMeta(PersistentUtil.getPrimaryField(type),this);
		tableNameFlag = tableName;
        // 获取注解对象
        if (type.isAnnotationPresent(CatTableFlag.class)) {
            CatTableFlag catTable = type.getAnnotation(CatTableFlag.class);
            if (!catTable.value().trim().equals("")) {
                flat = catTable.value();
                tableNameFlag+= "_${" + catTable.value() + "}";
                isCatTable = true;
            }
        }
        flagTableName =  tableName;
        if(isCatTable)
        {
            flagTableName += "_${flag}";
        }
		// 持久化字段集
		List fields = PersistentUtil.getPersistentFields(type);
		// 初始化集合
		columnNameCollection = new ArrayList();
		columnMetaMap = new LinkedHashMap();
		StringBuilder columnNamesTemp = new StringBuilder();

		for (Field field : fields) {
			//静态不需要处理
			if(Modifier.isStatic(field.getModifiers()))
			{
				continue;
			}
			MybatisColumnMeta columnMeta = new MybatisColumnMeta(field,this);
			columnMetaMap.put(field.getName(), columnMeta);
			columnNameCollection.add(columnMeta.getColumnName());
			columnNamesTemp.append(",").append(columnMeta.getColumnName());
		}
		columnNames = columnNamesTemp.substring(1);
	}

	// getter

	public Class getType() {
		return type;
	}

	public String getTableName() {
		return tableName;
	}

	public String getEntityName() {
		return entityName;
	}

	public MybatisColumnMeta getPrimaryColumnMeta() {
		return primaryColumnMeta;
	}

	public List getColumnNameCollection() {
		return columnNameCollection;
	}

	public String getColumnNames() {
		return columnNames;
	}

	public Map getColumnMetaMap() {
		return columnMetaMap;
	}

    public String getFlat()
    {
        return flat;
    }

    public void setFlat(String flat)
    {
        this.flat = flat;
    }

    public String getTableNameFlag()
    {
        return tableNameFlag;
    }

    public void setTableNameFlag(String tableNameFlag)
    {
        this.tableNameFlag = tableNameFlag;
    }

    public boolean isCatTable()
    {
        return isCatTable;
    }

    public void setCatTable(boolean isCatTable)
    {
        this.isCatTable = isCatTable;
    }

    public String getFlagTableName()
    {
        return flagTableName;
    }

    public void setFlagTableName(String flagTableName)
    {
        this.flagTableName = flagTableName;
    }


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy