package org.nutz.dao.entity.annotation;
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;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.nutz.dao.jdbc.ValueAdaptor;
/**
* 声明一个 Java 字段是否有对应的数据库字段
* <p>
* 如果数据库字段名同 JAVA 字段名不一样,通过这个注解可以进行特殊标注:
*
* <pre>
* @Column("数据库字段名")
* </pre>
*
* <b style=color:red>需要说明的是:</b>
* <ul>
* <li>
* 如果你的 POJO <u><b>没有任何一个字段</b></u> 声明了这个注解,那么所有的 Java 字段都会被认为是数据库字段。
* <li>声明了 '@Id' 和 '@Name' 的字段没必要声明这个注解。
* </ul>
*
* @author zozoh(zozohtnt@gmail.com)
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.METHOD})
@Documented
public @interface Column {
String value() default "";
Class<? extends ValueAdaptor> adaptor() default EMPTY.class;
public static class EMPTY implements ValueAdaptor{
@Override
public Object get(ResultSet rs, String colName) throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public void set(PreparedStatement stat, Object obj, int index)
throws SQLException {
// TODO Auto-generated method stub
}
}
}