有了一个框架,只需要配置好数据库连接,就可以在java代码层操控database,对于写个model便在数据库中创建了一张表表示很好奇,隐约想起以前看《Thinking in Java》中关于注解(Annotation)一张中对于自动生成SQL语句的操作。
首先略微介绍下注解(亦称为与数据metadata(ORM-对象/关系映射中的核心))。
Annotation源自JavaSE1.5,内置3个标准注解,4个元注解:
java.lang.*中的@Override,@Deprecated, @SuppressWarnings
java.lang.annotations.*中的@Target, @Inherited, @Retention, @Documented
对于后4个元注解,稍后再在代码中解释。
对于一个创建表的SQL Create语句,我们要确定几个元素:表名,列名,列名类型,类型长度,约束等,这些都可以在实体类的属性加以注解说明来实现。
对于表名注解:
1 packageannotiation;2 import java.lang.annotation.*;3
4 @Inherited //允许子类继承父类中的注解
5 @Documented //将此注解包含在Javadoc中
6 @Target(ElementType.TYPE) //类、接口(包括注解类型)或枚举类型声明
7 @Retention(RetentionPolicy.RUNTIME) //VM在运行时保留注解,从而通过反射获取信息
8
9 public @interfaceDBTable {10 public String name() default ""; //注解未赋值是,默认为空
11 }
对于字段注解:(这边先只设定了String类型,其实实际情况没这么单纯,下篇再优化)
1 packageannotiation;2 import java.lang.annotation.*;3
4 @Inherited5 @Documented6 @Target(ElementType.FIELD) //域声明(包括枚举类型实例)
7 @Retention(RetentionPolicy.RUNTIME)8
9 public @interfaceSQLInteger {10 String name() default "";11 Constraints constraints() default @Constraints; //约束注解,详细见下面代码
12 }