您的位置:首页 > 其它

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

2017-03-31 17:14 363 查看
编程是一种美德,是促使一个人不断向上发展的一种原动力(来自csdn首页)

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

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

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

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

1.自动生成代码

首先,我们在AS中新建一个名为Greendao 的安卓项目

然后,我们在AS控制面板上点击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/
d0bd
java");
} catch (Exception e) {
e.printStackTrace();
}
}
}


我们可以看到,上述代码与在esclipse中输入的代码差不多

但是也是存在差异的,其中,这里我们创建了两个表,Son 表和Father

其实是因为这里我想要演示一下数据库中两个表是如何关联的

可以看到,我们在添加Son表对象的属性时,添加了一个
addLongProperty("fatherId")
属性,然后添加了一个
addToOne(father, fatherId)
属性,其实这就是两个表关联的关键:通过在Son表中设置一个Father表的外键

这样,我们的两个表就初步关联在了一起

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



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

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,就可以看到打印的如下信息了:



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

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

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

往期回顾:

GreenDAO之「01.初始GreenDAO」

GreenDAO之「02.Eclipse环境下的基本操作」

彩蛋!!

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



程序猿干货分享,欢迎您的到来!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: