package com.baidu.unbiz.common.genericdao.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import com.github.knightliao.apollo.utils.common.StringUtil;
/**
* 表示主键名的注释,添加<code>@Inherited</code>以便零注解
*/
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Table {
/**
* 在哪个DB中
*
* @return
*/
String db();
/**
* 表名 添加默认值方便<code>@Inherited</code>后零注解
*
* @return
*/
String name() default "";
/**
* 该表做了多少个切片拆分
*
* @return
*/
int shardCount() default 0;
/**
* 主键字段的名字
*
* @return
*/
String keyColumn() default "id";
/**
* 加一个全局的字段修改标志,默认<code>false</code>向前兼容
*
* @return
*/
boolean columnsModified() default false;
/**
* 映射规则
*
* @return
*/
ColumnStyle columnStyle() default ColumnStyle.LOWER_CASE;
public static enum ColumnStyle {
LOWER_CASE {
@Override
public String convert(String field) {
return field.toLowerCase();
}
},
/**
* 驼峰 --> 下划线
* <p/>
* <pre>
* aBc-- > a_bc
* </pre>
*/
JAVA_TO_MYSQL {
@Override
public String convert(String field) {
return StringUtil.toLowerCaseWithUnderscores(field);
}
};
public abstract String convert(String field);
}
/**
* 是否为视图
*/
boolean isView() default false;
}