zoukankan      html  css  js  c++  java
  • Android Afinal框架学习(一) FinalDb 数据库操作

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

    相应源代码:

    net.tsz.afinal.annotation.sqlite.* 

    net.tsz.afinal.db.sqlite.*

    net.tsz.afinal.db.table.*

    net.tsz.afinal.utils.ClassUtils、net.tsz.afinal.utils.FieldUtils

    FinalDb

    建库

    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);

    主键注解:

    必须有一个主键。

    默认列名为id。并自增。使用注解@Id(column="id")

    实际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等操作。不详列了


  • 相关阅读:
    vue中倒计时的用法
    ant.design 中各种问题
    vue-cli3.0跨域代理问题
    vue-cli3.0配置多页面应用
    vue-axios中post和get携带参数和token
    后台返回的时间戳转化为前端的日期
    微信与支付宝二维码在页面中的使用
    git梗概介绍
    键盘和鼠标事件的区别和使用
    vue.js学习笔记(5)— Vue路由传参
  • 原文地址:https://www.cnblogs.com/wgwyanfs/p/7400991.html
Copyright © 2011-2022 走看看