com.github.wz2cool.dynamic.mybatis.EntityHelper Maven / Gradle / Ivy
package com.github.wz2cool.dynamic.mybatis;
import com.github.wz2cool.dynamic.exception.PropertyNotFoundInternalException;
import org.apache.commons.lang3.StringUtils;
import javax.persistence.Column;
import javax.persistence.Table;
import java.lang.reflect.Field;
/**
* @author Frank
*/
public class EntityHelper {
private EntityHelper() {
throw new UnsupportedOperationException();
}
static String getTableName(final Class> tableClass) {
if (tableClass == null) {
throw new NullPointerException("tableClass");
}
if (tableClass.isAnnotationPresent(Table.class)) {
Table table = tableClass.getAnnotation(Table.class);
String dbTableName = table.name();
if (StringUtils.isNotBlank(dbTableName)) {
return dbTableName;
}
}
String useTableName = tableClass.getSimpleName();
return camelCaseToUnderscore(useTableName);
}
static String getColumnNameByProperty(final String propertyName, final Field[] properties) {
Field matchProperty = getPropertyField(propertyName, properties);
Column column = getColumnByProperty(propertyName, properties);
if (column != null && StringUtils.isNotBlank(column.name())) {
return column.name();
}
String usePropertyName = matchProperty.getName();
return camelCaseToUnderscore(usePropertyName);
}
static Column getColumnByProperty(final String propertyName, final Field[] properties) {
Field matchProperty = getPropertyField(propertyName, properties);
if (matchProperty.isAnnotationPresent(Column.class)) {
return matchProperty.getAnnotation(Column.class);
}
return null;
}
static Field getPropertyField(final String propertyName, final Field[] properties) {
if (StringUtils.isBlank(propertyName) || properties == null || properties.length == 0) {
throw new PropertyNotFoundInternalException(String.format("Can't find property: %s", propertyName));
}
Field result = null;
for (Field property : properties) {
if (propertyName.trim().equalsIgnoreCase(property.getName())) {
result = property;
break;
}
}
if (result != null) {
return result;
} else {
throw new PropertyNotFoundInternalException(String.format("Can't find property: %s", propertyName));
}
}
public static String camelCaseToUnderscore(String str) {
return str.replaceAll("(.)(\\p{Lu})", "$1_$2").toLowerCase();
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy