@Entity
@Table(name="t_pet")
public class Pet extends Model{
public final static Pet instance = new Pet();
private String name;
private int age;
public Pet(){}
public Pet(String name, int age){
this.name = name;
this.age = age;
}
//setter and getter
}
//使用
new Pet("xiaohei", 5).create();//insert
new Pet("xiaohei", 5).save();//当没有ID值的时候是insert
Pet pet = new Pet("xiaobai",4);
pet.create();//insert这时候pet.id已经被注入了
pet.setName("test");
pet.save();//这时候因为pet.id有值,所以是update
pet = new Pet();
pet.setId(2);
pet.load();//通过id值去查询数据库,并将数据注入到pet实例中。
List<Pet> pets = Pet.instance.findAll();
/* 分页 */
List<Pet> page = Pet.instance.find().fetch(10);
page = Pet.instance.find().fetch(2, 5);
/* 条件查询 */
List<Pet> pets = Pet.instance.find("byName", "xiaohei").fetch();
pets = Pet.instance.find("byNameAndAge", "xiaohei", 5).fietch();
pets = Pet.instance.find("name = ?", "xiaohei").fetch();
Pet p = Pet.instance.find("name = ?", "xiaohei").first();
p = Pet.instance.findById(3);
p = Pet.instance.find("byNameAndAge", "xiaohei", 5).first();
/* 删除 */
Pet.instance.delete("byName", "xiaohei");
Pet.instance.deleteAll();
/* 计算 */
long rows = Pet.instance.count();/* select count(*) */
rows = Pet.instance.count("byName", "xiaohei");/* count(*) ... where name='xoapjeo' */
另外,这个继承的Model类还封装了一个dao。
Pet.instance.dao().selectAll().query();
Pet.instance.dao().select("name","age").where().field("id").equal(5).query(1, 5);
Pet.instance.dao().insert("name","age").values("test", 4).execute();
Pet.instance.dao().update().set(new String[]{"name","age"}, "test", 8).execute();
Pet.instance.dao().delete().execute();
Pet.instance.dao().xxxxxxx......
其他更新还有:
各个模块改善日志功能,提供多日志配置。控制台打印开关等。
各个模块的sacnPackage增加绝对路径,必须以"AP:"开头。主要用于测试提供一个Class扫描路径。
DAO增加分页,DAOFactory.getDAO(Pet.class).selectAll().query(1, 5);
将CascadeDAO的 "select *" 修改为 "select xxx,xxx,xxx"
MVC.Action增加XML的视图响应。@Produces(MimeType.XML)
MVC.Action增加对FreeMarker模板的支持