/** * 获取实体映射表信息 * * @param clazz 反射实体类 * @return 数据库表反射信息 */ public static TableInfo getTableInfo(Class<?> clazz) { if (clazz == null) { return null; } TableInfo tableInfo = TABLE_INFO_CACHE.get(ClassUtils.getUserClass(clazz)); if (null != tableInfo) { return tableInfo; } //尝试获取父类缓存 Class currentClass = clazz; while (null == tableInfo && Object.class != currentClass) { currentClass = currentClass.getSuperclass(); tableInfo = TABLE_INFO_CACHE.get(ClassUtils.getUserClass(currentClass)); } if (tableInfo != null) { TABLE_INFO_CACHE.put(ClassUtils.getUserClass(clazz), tableInfo); } return tableInfo; }
/** * 获取当前对象的class * * @param object 对象 * @return 返回对象的 user class */ public static Class<?> getUserClass(Object object) { Assert.notNull(object, "Error: Instance must not be null"); return getUserClass(object.getClass()); }
/** * 获取该类的所有属性列表 * * @param clazz 反射类 * @return 属性集合 */ public static List<Field> getAllFields(Class<?> clazz) { List<Field> fieldList = ReflectionKit.getFieldList(ClassUtils.getUserClass(clazz)); if (CollectionUtils.isNotEmpty(fieldList)) { return fieldList.stream() .filter(i -> { /* 过滤注解非表字段属性 */ TableField tableField = i.getAnnotation(TableField.class); return (tableField == null || tableField.exist()); }).collect(toList()); } return fieldList; }
/** * 获取当前的SqlSessionFactory * * @param clazz 实体类 */ public static SqlSessionFactory currentSessionFactory(Class<?> clazz) { TableInfo tableInfo = TableInfoHelper.getTableInfo(clazz); Assert.notNull(tableInfo, ClassUtils.getUserClass(clazz).getName() + " Not Found TableInfoCache."); String configMark = tableInfo.getConfigMark(); GlobalConfig mybatisGlobalConfig = getGlobalConfig(configMark); return mybatisGlobalConfig.getSqlSessionFactory(); }
entityClass = ClassUtils.getUserClass(entityClass.getSuperclass()); tableInfo = TableInfoHelper.getTableInfo(entityClass);
entityClass = ClassUtils.getUserClass(entityClass.getSuperclass()); tableInfo = TableInfoHelper.getTableInfo(entityClass);