GreenDAO之「03.AS环境下的基本操作」

编程是一种美德,是促使一个人不断向上发展的一种原动力(来自csdn首页)

GreenDAO之「02.Eclipse环境下的基本操作」中,我们一起学习了greendao在eclipse环境中的基本操作

但是,我们现在主流的开发工具其实是AS

这篇文章呢,我们就一起学习一下greendao在AS中的操作

为避免内容的重复,我们在AS中学习时有了点不一样的内容,一起看一下吧!

1.自动生成代码

首先,我们在AS中新建一个名为Greendao 的安卓项目
然后,我们在AS控制面板上点击Project Structure,也就是下图中的按钮(倒数第四个):
Project Structure

然后,我们可以看到如下对话框,按照如下图所示操作 :
Project Structure

点击加号之后,我们选择Library dependency,打开Choose Library Dependency 对话框,然后我们在搜索框里搜索greendao,在出现的搜索选项里,我们选择搜索项点击ok,我们就把项目所需要的依赖包导入了!

然后,我们在新建项目中新建一个Module,注意我们这里是新建一个Java Library 我们命名为greendaogenerate

然后我们再按照刚才的操作,为greengenerate添加下图中的依赖包
依赖包添加

好了,这样我们的项目所需的依赖包就添加完成了,下面,我们在greendaogenerate的MyClass类中添加以下代码:

public class MyClass {

    public static void main(String args[]) {

        Schema schema = new Schema(1, "www.yuanhongbao.win");

        Entity son = schema.addEntity("Son");
        son.addStringProperty("name");
        son.addIntProperty("age");
        son.addIdProperty();
        Property fatherId = son.addLongProperty("fatherId").getProperty();//Son表的外键

        Entity father = schema.addEntity("Father");
        father.addStringProperty("name");
        father.addIntProperty("age");
        father.addIdProperty();

        son.addToOne(father, fatherId);

        try {
            new DaoGenerator().generateAll(schema, "app/src/main/java");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

我们可以看到,上述代码与在esclipse中输入的代码差不多
但是也是存在差异的,其中,这里我们创建了两个表,Son 表和Father
其实是因为这里我想要演示一下数据库中两个表是如何关联的
可以看到,我们在添加Son表对象的属性时,添加了一个addLongProperty("fatherId")属性,然后添加了一个addToOne(father, fatherId)属性,其实这就是两个表关联的关键:通过在Son表中设置一个Father表的外键
这样,我们的两个表就初步关联在了一起

然后我们运行MyClass,当出现下图中的打印信息时,说明我们的代码自动生成成功了!
logcat

到此,自动生成代码完成!

2.基本操作

由于基本操作与esclipse环境中的操作差别不大,这里简要演示插入数据和查询数据
另外演示两个表之间关联的效果

首先,我们定义一下greendao所需要使用到的类:

private DaoMaster master;
private DaoSession session;
private SQLiteDatabase db;

private SonDao sonDao;
private FatherDao fatherDao;

然后,我们封装一个openDb的方法:

 private void openDb() {

    db = new DaoMaster.DevOpenHelper(MainActivity.this, "person.db", null).getWritableDatabase();
    master = new DaoMaster(db);
    session = master.newSession();
    sonDao = session.getSonDao();
    fatherDao = session.getFatherDao();
        }

然后我们封装插入数据的方法:

private void addPerson() {

        Son son = new Son();
        son.setName("小猿");
        son.setAge(20);

        Father father = new Father();
        father.setName("James");
        father.setAge(45);

        long fatherId = fatherDao.insert(father);
        son.setFatherId(fatherId);
        sonDao.insert(son);
    }

这里我们分别定义了一个Son对象和Father对象
然后我们为Son对象设置了setFatherId(fatherId)属性,就是设置Son表的外键为Father表的ID
然后我们调用insert 方法,将数据分别添加到了Son表和Father表中

然后我们封装一个查询的方法:

 private void queryPerson() {

     sonList = sonDao.queryBuilder().list();
     Log.i("MAIN_TAG", "Son表:" + sonList);
     fatherList = fatherDao.queryBuilder().list();
     Log.i("MAIN_TAG", "Father表:" + fatherList);

    }

这里的sonList和fatherList是我们分别定义的一个List对象:

private List<Son> sonList;
private List<Father> fatherList;

然后我们调用了queryBuilder方法查询数据

然后我们在Son类和Father类里分别添加toString方法:

在Son类里右击——>Generate——>toString——>OK
Father类操作相同

最后我们将方法添加到onCreate方法中:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    openDb();
    addPerson();
    queryPerson();
        }

好,我们运行,在logcat搜索框里搜索MAIN_TAG,就可以看到打印的如下信息了:
logcat

我们可以看到Son的fatherId属性值就是Father的id属性值

到此,我们在AndroidStudio环境下,对数据库的操作就学习完成了!

接下来的文章,我们将一起学习一下GreenDAO的各种各样的数据库的查询方法,一起期待吧!


往期回顾:
GreenDAO之「01.初始GreenDAO」
GreenDAO之「02.Eclipse环境下的基本操作」

彩蛋!!

看到这里的朋友你有福利了!我的个人微信公众号上线了!众多热门技术文章,众多有趣好玩的脑洞,请扫描下方二维码关注!

二维码
程序猿干货分享,欢迎您的到来!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值