2014年11月6日 星期四

DaoFactory greendao

http://android.hew.io/octa-george/android-greendao-sample

1.https://github.com/SureCase/GreenDaoForAndroidStudio

Download module

2.

Add module to project

3.

Connect generator with project

4.

Run module

5.

Make project aware of GreenDao files

6.
  • Project is still not aware of new Java files because it isn't located in ../<PROJECT NAME>/src/main/java directory. To fix this we must specify projects source sets. It is important to point two java file sources: /src/main/java and /src/main/java-gen. You can do it by placing sourceSets section into android section in gradle.build file:

android {
 
sourceSets {
main {
manifest.srcFile 'src/main/AndroidManifest.xml'
java.srcDirs = ['src/main/java', 'src/main/java-gen']
res.srcDirs = ['src/main/res']
}
}
}




package citygo.ewallet.com.facebookexample;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;

import dao.BoxDao;
import dao.DaoMaster;
import dao.DaoSession;
import de.greenrobot.dao.AbstractDao;

/**
 * Created by linkulife on 2014/11/5.
 */
public class DaoFactory {
    private DaoSession daoSession;
    private static DaoFactory daoFactory;
    public   static DaoFactory getInstance(){
        if(daoFactory==null){
            daoFactory = new DaoFactory();
        }
        return daoFactory;
    }
    public void init(Context context){
        DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(context, "example-db", null);
        SQLiteDatabase db = helper.getWritableDatabase();
        DaoMaster daoMaster = new DaoMaster(db);
        daoSession = daoMaster.newSession();
    }

    public DaoSession getDaoSession() {
        return daoSession;
    }
    public void beginTransaction(AbstractDao dao){
        dao.getDatabase().beginTransaction();
    }

    public void rollback(AbstractDao dao){
        dao.getDatabase().endTransaction();
    }
    public void commit(AbstractDao dao){
        dao.getDatabase().setTransactionSuccessful();
        dao.getDatabase().endTransaction();
    }


    public void setDaoSession(DaoSession daoSession) {
        this.daoSession = daoSession;
    }
    public BoxDao getBoxDao(){
        return daoSession.getBoxDao();
    }

}


public class DaoExampleApplication extends Application {



    @Override
    public void onCreate() {
        super.onCreate();
        DaoFactory.getInstance().init(this);
    }

}



使用:
   @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);

        QueryBuilder.LOG_SQL = true;
        QueryBuilder.LOG_VALUES = true;



        BoxDao b = DaoFactory.getInstance().getBoxDao();

        b.deleteAll();
        Box box= new Box();
        box.setDescription("de");
        box.setName("name");


        b.insertOrReplace(box);


        DaoFactory.getInstance().beginTransaction(b);
        Box box1= new Box();
        box1.setName("name2");
        b.insert(box1);
        DaoFactory.getInstance().rollback(b);


        List<Box> all = b.loadAll();
        for(Box bb:all){
            Log.d("",""+bb.getName());
        }



    }




    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        android:name=".DaoExampleApplication"
        >



package ex.lfo.com.myapplicationex;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import de.greenrobot.dao.query.QueryBuilder;
import greendao.BoxDao;
import greendao.DaoMaster;
import greendao.DaoSession;

/**
 * Created by Administrator on 2015/2/14.
 */
public class Orm {
    private static Orm instance=null;


    private  SQLiteOpenHelper helper;
    private SQLiteDatabase db;
    private DaoMaster daoMaster;

    private Orm(Context context){
        QueryBuilder.LOG_SQL = true;
        QueryBuilder.LOG_VALUES = true;

        initDb(context);
    }

    private void initDb(Context context) {
         helper = new DaoMaster.DevOpenHelper(context, "box", null);
         db = helper.getWritableDatabase();
         daoMaster = new DaoMaster(db);

    }

    public DaoSession getDaoSession(){
        DaoSession daoSession = daoMaster.newSession();
       // BoxDao boxDao= daoSession.getBoxDao();

       return daoSession;
    }

    public static Orm getInstance(Context context ){

        if(instance==null){

            instance=new  Orm(context);
        }
        return instance;
    }

}

沒有留言:

張貼留言