欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

eweb4j-1.9-支持ActiveRecord模式

程序员文章站 2022-06-08 13:22:46
...
@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模板的支持