Android GreenDao 的使用详讲

GreenDao 是第三方数据库插件,里面封装了各种对数据库操作的方法,大大提高了开发人员对sqlite数据库操作的效率。接下来详细介绍GreenDao 的使用方法。

思路:

  • Ecplise 生成资源文件到指定路径
  • 复制资源文件到Android studio项目下
  • 使用资源文件

1:ecplise中使用GreenDao生成资源文件

说明:
生成的资源文件有如下:一个表对应四个资源文件,两个表对应六个资源文件…(当然这是笼统的说法),准确的说有固定的DaoMaster.javaDaoSession.java ,其余的是各个表的属性类和针对该表的数据操作类(如一个user表对应一个UserDao.java
DaoMaster.java 中继承了SQLiteOpenHelper 并实现了onCreate()onUpgrade() 方法,其实原理跟直接使用SQLiteOpenHelper创建自己的数据库类是一样的。
DaoSession.java 该类是返回针对表的数据操作类,例如对user表操作的UserDao类。
用ecplise生成资源文件可能是因为比较方便。

1 导入:
打开 ecplise新建项目,项目下新建lib文件夹,将GreenDao.jar复制到lib中,并添加依赖:(对项目右键—properties—Add JARs… 找到项目下的lib下的GreenDao.jar 一路确定就可以了)

2 创建资源文件:

ecplise新建项目中新建主类MainTest ,并实现以下方法:

import java.io.IOException;

import de.greenrobot.daogenerator.DaoGenerator;
import de.greenrobot.daogenerator.Entity;
import de.greenrobot.daogenerator.Schema;

public class MainTest {

    public static void main(String[] args) {
            //两个参数,第一个是版本号,第二个是Androidstudio的包名  +  资源文件要放置的文件夹名(文件夹名可自定义,但是这里的文件名要和Androidstudio下的文件名一致)
        Schema schema = new Schema(1, "com.inext.test.greendao.dao");
        //创建表,多个表就实现多个方法
        addUser(schema);
        try {
            //生成资源到指定路径(可自定义),并捕捉异常
            new DaoGenerator().generateAll(schema, "F:\\date\\src");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    //该方法生成指定的表,如果需要多个表,那就多实现几个addXxx方法

    public static void  addUser(Schema schema) {
        //创建用户类User
        Entity entity = schema.addEntity("User");
        //创建表
        entity.setTableName("user");
        //创建id,并设置主键和自增
        entity.addIdProperty().primaryKey().autoincrement();
        //以下是表中的各个字段
        entity.addStringProperty("name");
        entity.addStringProperty("pwd");
        entity.addStringProperty("age");
        entity.addStringProperty("imgUrl");
    }
}

然后在ecplise中运行该java项目,控制台会提示一些完成的提示,例如:

greenDAO Generator
Copyright 2011-2015 Markus Junginger, greenrobot.de. Licensed under GPL V3.
This program comes with ABSOLUTELY NO WARRANTY
Processing schema version 1...
Written F:\date\src\com\inext\test\greendao\dao\UserDao.java
Written F:\date\src\com\inext\test\greendao\dao\User.java
Written F:\date\src\com\inext\test\greendao\dao\DaoMaster.java
Written F:\date\src\com\inext\test\greendao\dao\DaoSession.java
Processed 1 entities in 199ms

说明资源文件生成成功,现在就可以去指定文件夹找到资源文件。

2:Androidstudio中使用生成的资源文件

1:首先导入jar包,并添加依赖,不再多说。
2:将生成的所有资源文件拷贝到指定的文件夹中。
3:新建类继承Applicaion ,并实现相关方法,其中方法是固定的格式

public class MyApp extends Application{
    private DaoMaster daoMaster;
    private DaoSession daoSession;
    private static MyApp instance;
    @Override
    public void onCreate() {
        super.onCreate();
        instance = this;
    }

    public static MyApp getApp(){
        return instance;
    }

    public DaoMaster getDaoMaster(Context context){
        if (daoMaster == null){
            DaoMaster.OpenHelper helper =
                    new DaoMaster.DevOpenHelper(context,"MyDbTest.db",null);
            daoMaster = new DaoMaster(helper.getWritableDatabase());
        }
        return daoMaster;
    }

    public DaoSession getDaoSession(Context context){
        if (daoSession == null){
            if (daoMaster == null){
                daoMaster = getDaoMaster(context);
            }
            daoSession = daoMaster.newSession();
        }
        return daoSession;
    }
}

4:配置清单文件AndroidManifest.xml

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"

        //重新指定application位置,即刚刚创建的MyApp 
        android:name=".application.MyApp"

        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

至此,数据库什么的都搭建好了,现在就可以对数据库进行自己想要的操作了

5:小例子:往表user中插入一条数据

public class MainActivity extends AppCompatActivity {

    private UserDao userDao;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取UserDao ,可调用里面已经封装好的方法对数据库进行操作
        userDao = MyApp.getApp().getDaoSession(this).getUserDao();
        //实例一个user对象
        User user = new User();
        user.setName("xioasheng");
        user.setPwd("admin");
        user.setAge("20");
        user.setImgUrl("地址");
        //调用封装好的insert方法
        userDao.insert(user);
        //通过封装好的loadAll方法获取表中的所有数据
        List list = userDao.loadAll();
        //测试是否得到了数据
        Toast.makeText(this,""+list.size(),Toast.LENGTH_SHORT).show();
    }

}

运行结果是,打出了一个 1 。说明插入数据成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值