Android Afinal框架學習(一) FinalDb 數據庫操做

框架地址:https://github.com/yangfuhai/afinaljava

相應源代碼:git

net.tsz.afinal.annotation.sqlite.* github

net.tsz.afinal.db.sqlite.*sql

net.tsz.afinal.db.table.*框架

net.tsz.afinal.utils.ClassUtils、net.tsz.afinal.utils.FieldUtilspost

FinalDbthis

建庫 spa

FinalDb db = FinalDb.create(context, "mytest.db", true);
有實體bean

@Table(name = "user") //@Table 表示orm(對象關係映射)的表名
public class User {
    private int id;
    private String name;
    private String email;
    private Date registerDate;
    private Double money;
     
    /////////////getter and 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 getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public Date getRegisterDate() {
        return registerDate;
    }
    public void setRegisterDate(Date registerDate) {
        this.registerDate = registerDate;
    }
    public Double getMoney() {
        return money;
    }
    public void setMoney(Double money) {
        this.money = money;
    }
}

建表

db.save(user);

主鍵註解:

必須有一個主鍵。code

默認列名爲id。並自增。使用註解@Id(column="id")orm

實際bean中沒有id屬性,使用@id(column="name") 使name成主鍵 。非integer等整數類型。不會自增

屬性註解

@Property(column=「uname") ,  將屬性name映射成表中的uname字段

取消orm的註解

@Transient 表示不將某屬性映射到表中

一對多關係

@OneToMany(manyColumn="parentid")

多對一關係

@ManyToOne(column="parentid")

FinalDB OneToMany懶載入用法:

模型定義:

public class Parent{
    private int id;
    @OneToMany(manyColumn = "parentId")
    private OneToManyLazyLoader<Parent ,Child> children;
    /*....*/
}
public class Child{
    private int id;
    private String text;
    @ManyToOne(column = "parentId")
    private  Parent  parent;
    /*....*/
}

使用:

List<Parent> all = db.findAll(Parent.class);
        for( Parent  item : all){
            if(item.getChildren ().getList().size()>0)
                Toast.makeText(this,item.getText() + item.getChildren().getList().get(0).getText(),Toast.LENGTH_LONG).show();
        }

FinalDb對象,有很是多方法,CRUD等操做。不詳列了

相關文章
相關標籤/搜索