package org.nutz.dao.util.meta;
import java.util.Date;
import org.nutz.dao.entity.annotation.ColDefine;
import org.nutz.dao.entity.annotation.Column;
import org.nutz.dao.entity.annotation.EL;
import org.nutz.dao.entity.annotation.Id;
import org.nutz.dao.entity.annotation.Name;
import org.nutz.dao.entity.annotation.Prev;
import org.nutz.dao.entity.annotation.Table;
/**
* Nutz的Pojo不需要继承任何类,也不需要实现任何接口.<p/>
* 当然也可以跟nutzbook一样做个公共超类及实现Serializable<p/>
* 超类的字段也会继承哦,但@Table等类注解不能
* @author wendal(wendal1985@gmail.com)
*
*/
@Table("t_test_simple_pojo")
public class SimplePojo {
/**
* Nutz区分数值型主键和字符型主键. nutz并不检查数据库中是不是真正的主键哦.
*/
/**
* 数值型主键, 如果不是自增或触发器生成,就需要写成 @Id(auto=false), 否则插入数据时将忽略这个属性.
*/
@Id
private int id; /*字段属性名称是任意,并非强制叫id*/
/**
* 字符型主键.
*/
@Name
private String name;
// @Prev用于在插入前为字段赋值,非必选.
@Prev(els=@EL("uuid()")) // 通过调用nutz内部的el引擎,使用内置的uuid方法生成UUID字符串
// 还可以调用数据库语句来赋值 @Prev(@Sql("select xxx.next_var from dual"))
@Column("uk") // java属性与数据库字段不同名时,就需要用@Column设置
private String uckey;
// uckey设置了@Column,nutz就要求其他所有数据库字段都需要加@Column,即使它们的与表字段同名
@Column
@ColDefine(width=1024) // @ColDefine 大部分情况下用于建表时指定长度,
// 转为表定义就是 varchar(1024)
// 注意一下,如果不是字符串,应加上type=ColType.XXX 选一个最接近的类型
private String website;
@Column
private int age;
@Column("ct")
private Date createTime;
/*
* 如果添加了任何带参数的构造方法(除非是单个ResultSet参数),否则都需要添加一个无参数的构造方法
*/
public SimplePojo() {}
public SimplePojo(String name, String website, int age) {
this.name = name;
this.website = website;
this.age = age;
this.createTime = new Date();
}
// ====== 一堆getter/setter
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUckey() {
return uckey;
}
public void setUckey(String uckey) {
this.uckey = uckey;
}
public String getWebsite() {
return website;
}
public void setWebsite(String website) {
this.website = website;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
}