package com.jqmobile.core.orm;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 字段标签
* <p>
* <table>
* <tr><td>java</td><td>mysql 类型默认对照表</td></tr>
* <tr><td>UUID</td><td>binary(16)</td></tr>
* <tr><td>boolean</td><td>boolean</td></tr>
* <tr><td>byte</td><td>binary</td></tr>
* <tr><td>long</td><td>binary</td></tr>
* <tr><td>short</td><td>smallint</td></tr>
* <tr><td>int</td><td>int</td></tr>
* <tr><td>float</td><td>float</td></tr>
* <tr><td>double</td><td>decimal(17,5)</td></tr>
* <tr><td>String</td><td>nvarchar</td></tr>
* </table>
*
* @author modi
*
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(value=ElementType.FIELD)
public @interface DBColumn {
public static final String DefaultValue = DBTable.DefaultValue;
//public static final String Date = "datetime";
public static final String Char2 = "char(2)";
/**
* 用于图片
*/
public static final String Longblob = "longblob";
// public static final String Double2 = "decimal(17,2)";
public static final String TypePoint = "decimal(12,8)";
public static final String Type_Text = "text";
public static final String LONGTEXT = "LONGTEXT";
public static final int DefaultLength = 100;
/**
* 日期属性标示
* @return
*/
boolean date() default false;
/**
* 是否全部级联操作
* @return
*/
boolean cascadeAll() default true;
/**
* 更新时是否进行级联操作
* @return
*/
boolean cascadeUpdate() default true;
/**
* 删除时是否进行级联操作
* @return
*/
boolean cascadeDelete() default true;
/**
* 查询时是否进行级联操作
* @return
*/
boolean cascadeFind() default true;
/**
* 插入时是否进行级联操作
* @return
*/
boolean cascadeInsert() default true;
/**
* 是否映射,默认为true(映射)
* @return
*/
boolean mapping() default true;
/**
* 是否可以为null
* @return
*/
boolean canNull() default true;
/**
* 字段名称(默认用属性名)
*
* @return
*/
public String name() default DefaultValue;
/**
* 字段类型(默认参照对照表)
* <table>
* <tr><td>java</td><td>mysql 类型默认对照表</td></tr>
* <tr><td>UUID</td><td>binary(16)</td></tr>
* <tr><td>boolean</td><td>boolean</td></tr>
* <tr><td>byte</td><td>binary</td></tr>
* <tr><td>short</td><td>smallint</td></tr>
* <tr><td>int</td><td>int</td></tr>
* <tr><td>float</td><td>float</td></tr>
* <tr><td>double</td><td>decimal(17,5)</td></tr>
* <tr><td>String</td><td>nvarchar</td></tr>
* <tr><td>long</td><td>bigint(20)</td></tr>
* <tr><td>Date</td><td>datetime</td></tr>
* </table>
*
* @return
*/
public String type() default DefaultValue;
/**
* 字段长度(默认100)
*
* @return
*/
public int length() default 100;
/**
* 是否是ID字段,不管是否是主键ID还是关联ID,被标识成ID的字段在数据库被自动转换成binary(16)
* @return
*/
boolean id() default false;
/**
* 主键ID
* @return
*/
boolean primaryId() default false;
/**
* 字段备注
* @return
*/
String comment() default "";
// =====default=====
public String defaultStr() default DefaultValue;
public int defaultInt() default 0;
public long defaultLong() default 0;
public double defaultDouble() default 0.0;
}