package com.m.support.sqlite.util;
import java.lang.reflect.Field;
import com.alibaba.fastjson.JSON;
import com.m.common.utils.Logger;
import com.m.support.sqlite.annotation.Id;
public class FieldUtils {
// private static JSON gson = new JSON();
public static final String OWNER = "com_m_common_owner";
public static final String KEY = "com_m_common_key";
public static final String CREATEAT = "com_m_common_createat";
public static String getColumnByField(Field field) {
return String.format(" %s %s ", getColumnNameByField(field), getColumnType(field));
}
/**
* 获取这个字段定义的表字段名称
*
* @param field
* @return
*/
public static String getColumnNameByField(Field field) {
// 是否是主键
Id id = field.getAnnotation(Id.class);
if (id != null)
return id.column();
return field.getName();
}
/**
* 属性是否是基础类型java.lang.*
*
* @param field
* @return
*/
// public static boolean isBaseDateType(Field field) {
// Class<?> clazz = field.getType();
// return field.getType().isPrimitive() || clazz.equals(Integer.class) || clazz.equals(Byte.class)
// || clazz.equals(Long.class) || clazz.equals(Double.class) || clazz.equals(Float.class) || clazz.equals(Character.class)
// || clazz.equals(Short.class) || clazz.equals(Boolean.class);
// }
/**
* 获取属性的表字段类型,当前的所有字段都定义为TEXT
*
* @param field
* @return
*/
public static String getColumnType(Field field) {
return " TEXT ";
}
/**
* 数据转换成json字符串
*
* @param value
* @return
*/
public static String value2Json(Object value) {
return JSON.toJSONString(value);
}
/**
* json字符串转换成数据
*
* @param json
* @param field
* @return
*/
public static <T> T json2Value(String json, Field field) {
Logger.v(String.format("json=%s,clazz=%s", json, field.getClass().getSimpleName()));
try {
return JSON.parseObject(json, field.getGenericType());
} catch (Exception e) {
e.printStackTrace();
}
return (T) json;
}
}