EWeb4j目前最新版本是1.b.6.4
下载地址:http://code.google.com/p/eweb4j/downloads/list
下一个微版本1.b.6.5将会重点放在如何让各个模块的代码更加简洁。
约定优于配置,将是整洁之道的最佳实践。因此,EWeb4j框架也会采取这种方法。
来看看以下这个pojo类:
package test.po; import java.util.ArrayList; import java.util.Date; import java.util.List; import com.cfuture08.eweb4j.orm.config.annotation.ManyMany; import com.cfuture08.eweb4j.orm.config.annotation.One; /** * just a po * 约定: * 1类名以PO、POJO、Entity、Model结尾,取其前面的单词作为数据库表名。 * 例如类名PetPO,那么映射到的数据表名为Pet * 2属性名默认映射到数据表字段名。 * 但是要注意,被@ManyMany、@Many、@One其中一个注解并且没有@Column注解的属性, * 是不会映射到数据库表字段中去的。 * 3.ID属性,类属性名为id(忽略大小写)自动认为它是数据表的自增长字段并且是主键。 * * 上一个版本中的pojo中, * 类名上面会有@Table注解, * 属性名上面会有@Column注解 * id属性上会有@Id注解。 * 代码看起来会很不简洁。 * 很明显,这个版本看起来十分简洁。 * * @author weiwei * */ public class PetPO { private Integer id = 0; private String name; private String type; private Date birthday; private int age; private Date createTime; @One(column = "masterId") private Master master; @ManyMany(target = Master.class, relTable = "t_masterpetrel", from = "petId", to = "masterId") private List<Master> masters = new ArrayList<Master>(); //getter&setter public String toString() { return "[Pet id:" + this.id + ", name:" + this.name + ", age:" + this.age + ", type:" + this.type + ", birthday:" + this.birthday + ", createTime:" + this.createTime + "]"; } }
对比下上一个版本的写法:
package test.po; import java.util.ArrayList; import java.util.Date; import java.util.List; import com.cfuture08.eweb4j.orm.config.annotation.Column; import com.cfuture08.eweb4j.orm.config.annotation.Id; import com.cfuture08.eweb4j.orm.config.annotation.ManyMany; import com.cfuture08.eweb4j.orm.config.annotation.One; import com.cfuture08.eweb4j.orm.config.annotation.Table; /** * just a po * * @author weiwei * */ @Table("t_Pet") public class Pet { @Id @Column private Integer id = 0; @Column private String name; @Column private String type; private Date birthday; @Column private int age; @One(column="masterId") private Master master; @ManyMany(target = Master.class, relTable = "t_masterpetrel", from = "petId", to = "masterId") private List<Master> masters = new ArrayList<Master>(); //getter&setter public String toString() { return "[Pet id:" + this.id + ", name:" + this.name + ", age:" + this.age + ", type:" + this.type + ", birthday:" + this.birthday + ", createTime:" + this.createTime + "]"; }
对比之后,代码确实是简洁了不少,这就是约定优于配置的巨大好处了!
重新总结下,EWeb4j-1.b.6.5中,对于ORM的POJO来说,有以下约定:
1.类名,以PO|POJO|Entity|Model结尾,前段部分映射到表明,例如PetPO―>Pet
2.属性名,默认直接映射表字段名,被@Many|@ManyMany|@One注解,且没有@Column注解的属性不会映射到表字段
3.ID属性,名字为”id“(忽略大小写)的话,表示该属性映射到的字段是自增长的且是表主键。
待续...