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

对代码不满足,是任何真正有天才的程序员的根本特征 (来自csdn首页)

1.自动生成代码

我们通过查看GreenDAO的官方网站以及它在GitHub上的代码呢,发现在使用GreenDAO时,需要在java环境下自动生成一下GreenDAO的相关代码,然后再copy到安卓中来使用。

下面我们从eclipse环境下来看一下GreenDAO如何自动生成代码:

第一步:下载相关jar包

虽然我们可以从GreenDAO官网上找到其使用的相关jar包,这里为了节约大家时间,我把jar包上传到了CSDN资源里,点击下载链接 即可免费下载。解压下载的压缩包,可以看到一下三个jar包:
jar

到此,第一步结束。

第二步:新建java项目导入jar包

我们用eclipse新建一个java项目(注意是java项目),取名greendaogenerate,然后在项目根目录下创建一个lib文件夹,形如下图:
这里写图片描述

然后我们将解压得到的greendao-generator-2.0.0freemarker文件copy到lib文件夹。然后在项目上右击——>Properties——>Java Build Path——>Libraries——>Add Jars…——>打开新建的项目的lib文件夹——>选中两个jar包点击OK
这样我们的jar包就可以使用了。
然后我们在src文件夹下新建一个名为greendaogenerate的class文件,并添加main函数。然后在main函数里添加以下代码:

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

Entity note = schema.addEntity("Person");
note.addIdProperty();
note.addStringProperty("name").notNull();
note.addIntProperty("age");
note.addStringProperty("sex");
note.addDateProperty("date");

try {
    new DaoGenerator().generateAll(schema,      "../GreenDaoGenerate/src");
    } catch (IOException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }

如果代码有错误的话,按Ctrl+Shift+O导入一下包。
其实以上代码都是这个greendao官网要求我们这样做的。
其中,Schema对象的第一个参数是一个版本号,第二个参数是让我们规定自定生成的代码需要放置的包名。
然后我们用Entity创建了一个Person的类,然后为Person类添加了一些id、name等的一些属性。
然后我们new了一个DaoGenerator,其实他就是让我们规定一个自动生成的代码所要放置的地方,这里的“../GreenDaoGenerate/src”就是我们要将自动生成的代码放到src根目录下。
最后,我们try……catch了一下。
好,然后我们运行代码,我们可以看到控制台输出了下图中的字样:
控制台

这样就表示我们的代码自动生成成功了。
然后我们需要Refresh一下项目,就可以看到如下图所示的自动生成的代码了:
自动生成的代码

我们可以看到有好多报错,这是因为我们创建的是java项目,缺少android中的api,这里我们先不用管它。
好了,这样我们的代码就自动生成完成了,下面我们将它导入到android项目中!

第三步:新建Android 项目导入jar包和代码

我们新建一个名为greendaoDemo的Android项目,然后我们将解压得到的greendao-2.0.0文件copy到libs文件夹下。
然后我们将第三步生成的4个java文件copy到MainActivity所在的文件夹下,形如下图:
android项目结构
这时我们发现好多错误啊,不过不用着急,我们只需要打开有错误的文件,将报错的代码直接删除并保存就可以了!

到此,自动生成的代码就可以使用了!

2.GreenDAO 基本操作

其实以上操作只是一个准备工作,下面我们一起学习一下使用GreenDAO是如何对数据库中的数据进行经典的增、删、改、查操作的!

第一步:准备相关布局和绑定监听事件

我们在学习数据库基本操作的时候,无非就是对数据的增、删、改、查
我们学习使用GreenDAO操作数据库也不例外
我们知道,我们在自动生成代码的时候有一个Person类,其实这就是我们的数据库要储存的信息,一个Person的姓名等的信息
好,下面我们在activity_main 中创建3个EditText 和4个ButtonEditText 就是需要用户输入ID、姓名和年龄,4个Button 就对应了增删改查四个操作,我们分别绑定监听事件,下面我们看一下activity_main 中的代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <EditText
        android:id="@+id/id"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="输入学号" >
    </EditText>

    <EditText
        android:id="@+id/name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="输入姓名" >
    </EditText>

    <EditText
        android:id="@+id/age"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="输入年龄" >
    </EditText>

    <Button
        android:id="@+id/addBtn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="添加" />

    <Button
        android:id="@+id/queryBtn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="查询" />

    <Button
        android:id="@+id/updateBtn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="修改" />

    <Button
        android:id="@+id/deleteBtn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="删除" />

</LinearLayout>

下面我们在java代码绑定控件,并为其绑定监听事件,由于这一步操作比较简单,直接上代码:

public class MainActivity extends Activity implements OnClickListener {

    private EditText mId, mName, mAge;
    private Button mAdd, mQuery, mUpdate, mDelete;

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

        init();// 初始化控件

    }

    private void init() {

        mId = (EditText) findViewById(R.id.id);
        mName = (EditText) findViewById(R.id.name);
        mAge = (EditText) findViewById(R.id.age);
        mAdd = (Button) findViewById(R.id.addBtn);
        mQuery = (Button) findViewById(R.id.queryBtn);
        mUpdate = (Button) findViewById(R.id.updateBtn);
        mDelete = (Button) findViewById(R.id.deleteBtn);

        mAdd.setOnClickListener(this);
        mQuery.setOnClickListener(this);
        mUpdate.setOnClickListener(this);
        mDelete.setOnClickListener(this);

    }

    @Override
    public void onClick(View arg0) {

        switch (arg0.getId()) {
        case R.id.addBtn:

            break;
        case R.id.queryBtn:

            break;
        case R.id.updateBtn:

            break;
        case R.id.deleteBtn:

            break;

        default:
            break;
        }

    }

}

到此,第一步结束。

第二步:数据库基本操作:增!

其实,使用GreenDAO操作是非常套路的,非常套模式的
首先我们先声明一下以下我们需要使用到的4个大类:

private DevOpenHelper helper;
private DaoMaster master;
private DaoSession session;
private PersonDao dao;

以上四个类呢是我们每次使用GreenDAO都需要使用到的,其实重要的是他们的实例化的方法,我们先看一下这四个大类实例化的代码:

private void openDb() {

    helper = new DaoMaster.DevOpenHelper(MainActivity.this,  "person.db",null);
    master = new DaoMaster(helper.getWritableDatabase());
    session = master.newSession();
    dao = session.getPersonDao();

    }

因为我们每次对数据操作都要使用这四个类。所以 为直接能够调用,我们把实例化他们的代码封装到了openDb()方法中。

好了,下面我们就真正的要增加数据了,其实方法很简单,我们先看代码:

private void addData() {

        Person person = new Person(Long.valueOf(mId.getText().toString()),
                mName.getText().toString(), Integer.valueOf(mAge.getText()
                        .toString()), null, new Date());

        Long msg = dao.insert(person);

        mId.setText("");
        mName.setText("");
        mAge.setText("");

        Log.i("MAIN_TAG", "添加成功 personID : " + msg);

    }

看到以上代码,我们把它封装成了addData()方法
首先,我们创建了一个Person对象,我们将它的信息设置为了用户输入的ID、姓名和年龄,性别我们先设为空,创建日期我们使用了Date()类
然后我们执行dao.insert()方法将我们新建的Person对象就添加到数据库了,然后我们拿到了他的一个Long型返回值,用于打印数据有没有被添加上
然后我们把输入框清空

好,这样初始化数据库操作相关类的方法已经封装好
添加数据的方法也封装好了,下面我们对方法进行一个组合:

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

        openDb();// 实例化相关类
        init();// 初始化控件

    }
case R.id.addBtn:

        addData();// 添加数据

    break;

好,在我们运行程序之前,我们先为logcat设置一个输出的标签:

标签添加步骤

好了,我们运行程序,添加三条数据,我们可以看到MAIN_TAG标签下有如下信息:
logcat

这就说明,我们的数据已经添加成功!还挺简单的吧
好了,这样我们的增加操作就完成了!

第三步:数据库基本操作:查!

为了打印我们查询到的数据,我们需要为Person类添加toString()方法
我们在Person.java里,添加如下方法:

@Override
    public String toString() {
        return "Person [id=" + id + ", name=" + name + ",    age=" + age+ ", sex=" + sex + ", date=" + date + "]";
    }

然后我们封装一个queryData()方法,先看代码:

private void queryData() {

    list = dao.queryBuilder().list();
    Log.i("MAIN_TAG", "查询结果:" + list);
    }

其中list类的声明我们拿了出来以便使用:private List<Person> list其实关键代码只是dao.queryBuilder()
我们将方法返回值赋给了一个list对象,以便打印,
然后我们将方法添加到查询Button的监听事件里:

case R.id.queryBtn:
    queryData();// 查询数据(全部)
    break;

好,我们运行,点击查询,就看到控制台打印了刚才增加的数据了:
logcat

好,查询操作就此告一段落,具体的查询还有好多种情况,下一篇博客我们再慢慢学习!

第四步:数据库基本操作:改!

首先,我们封装了一个带Person对象参数的方法:

private void updateDate(Person person) {

        dao.insertOrReplace(person);
    }

其实只是一行代码,下面我们把他添加到修改Button的监听事件里:

case R.id.updateBtn:

    list = dao.queryBuilder().list();
    Person person = list.get(0);
    person.setName("小白");
    person.setAge(0);

    updateDate(person);

break;

这里我们先实例化了list,然后我们将list中第1个数据的名字修改为“小白”,年龄修改为“0”,然后执行我们封装的updateDate()方法。
好,我们运行,先点击修改,再点击查询,我们看到logcat打印以下信息:
logcat
我们可以看到ID为201701的信息,名字变成了“小白”,年龄变成了“0”。
好,修改数据,完成!

第五步:数据库基本操作:删!

首先,我们封装了一个delete()方法,代码如下:

private void deleteData() {

    list = dao.queryBuilder().list();
    for (Person person : list) {
        dao.delete(person);
    }
        }

我们可以看到,我们先实例化了list,然后遍历list中的所有数据,执行dao.delete()方法,这样就把数据库里的数据删除了!
我们运行,先点击删除,再点击查询,我们可以看到logcat打印了以下信息:
logcat
我们可以看到,数据库中的信息已经空了!这样,删除操作就完成了!

到此,我们在eclipse环境下,对数据库的操作就学习完成了!相关代码,点击下载链接即可免费下载

接下来的文章,我们将一起学习一下GreenDAO在AndroidStudio环境下的基本操作,一起期待吧!


往期回顾:
Android数据库框架GreenDAO之「01.初始GreenDAO」

彩蛋!!

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值