greenDAO 使用初体验

来源:互联网 发布:mash up软件下载 编辑:程序博客网 时间:2024/05/28 15:07
1: 使用的架包:greenDAO-generator.jar ,freemarker.jar,greenDAO.jar
2:   在同一个classpath 路径下建立一个javaProject
3: 引入架包 greenDAO-generator.jar,freemarker.jar
4:编写bean类,dao类,DaoMaster,DaoSession 生成器 代码如下:
package com.guanzhi.daogenerator;

import java.io.IOException;

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

public class MyDaoGenerator {

    public static void main(String[] args) {
        Schema schema = new Schema(3, "com.example.db");

        addNote(schema);
        try {
            new de.greenrobot.daogenerator.DaoGenerator().generateAll(schema,
                    "../GrenDaoTest/src-gen");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    private static void addNote(Schema schema) {

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

    }

}

5:运行上面的工程
6:如果报src错误,请在指定工程下新建src-gen目录

7: 生成的结构如下图:

8:编写BaseApplication实例化,DaoMaster,DaoSession
package com.example.application;import com.example.db.DaoMaster;import com.example.db.DaoSession;import com.example.db.DaoMaster.DevOpenHelper;import android.app.Application;import android.content.Context;import android.database.sqlite.SQLiteDatabase;public class BaseApplication extends Application {private static BaseApplication mInstance;private static final String DB_NAME = "pp-dbs";private static DaoMaster mDaoMaster;private static DaoSession mDaoSession;@Overridepublic void onCreate() {// TODO Auto-generated method stubsuper.onCreate();if (mInstance == null)mInstance = this;}public static DaoMaster getDaoMaster(Context context) {if (mDaoMaster == null) {DevOpenHelper openHelper = new DevOpenHelper(context, DB_NAME, null);SQLiteDatabase db = openHelper.getWritableDatabase();mDaoMaster = new DaoMaster(db);}return mDaoMaster;};public static DaoSession getDaoSession(Context context) {if (mDaoSession == null) {if (mDaoMaster == null) {getDaoMaster(context);}mDaoSession = mDaoMaster.newSession();}return mDaoSession;}}

9:数据操作工具类;package com.example.db;import java.util.List;import com.example.application.BaseApplication;import android.content.Context;public class DbService {             private final String TAG = DbService. class .getSimpleName();             private static DbService mInstance;             private static Context mContext;             private DaoSession mDaoSession ;             public PersonDao mPersonDao ;             private DbService() {            }             public static DbService getInstance(Context context) {                         if (mInstance == null) {                                     mInstance = new DbService();                                     if (mContext == null) {                                                 mContext = context.getApplicationContext();                                    }                                     mInstance .mDaoSession = BaseApplication.getDaoSession(context);                                     mInstance .mPersonDao = mInstance .mDaoSession .getPersonDao();                        }                         return mInstance ;            }             /**             * 获取所有数据             *             * @return             */             public List<Person> getAllPerson() {                         return mPersonDao .loadAll();            }             /**             * 插入数据             *             * @param pp             * @return             */             public   long savePerson(Person pp) {                         return mPersonDao .insert(pp);            }             /**             * 删除数据             *             * @param pp             */             public void deletePerson(Person pp) {                         mPersonDao .delete(pp);            }             public void deletePersonDetail( long id){                                                 mPersonDao .deleteByKey(id);            }                         public void deleteAllData(){                         mPersonDao .deleteAll();            }             /**             * 更新数据             *             * @param pp             */             public void updatePerson(Person pp) {                         mPersonDao .update(pp);            }             /**             * 根据id 获取数据             *             * @param id             * @return             */             public Person loadPeron( long id) {                         return mPersonDao .load(id);            }             /**             * 根据条件查询             */             public List<Person> queryPerson(String where, String... params) {                         return mPersonDao .queryRaw(where, params);            }}10:测试        package com.example.grendaotest;import java.util.Date;import java.util.Iterator;import java.util.List;import java.util.Random;import com.example.db.DaoMaster;import com.example.db.DaoSession;import com.example.db.DaoMaster.DevOpenHelper;import com.example.db.DbService;import com.example.db.Person;import com.example.db.PersonDao;import com.example.db.PersonDao.Properties;import android.os.Bundle;import android.app.Activity;import android.database.sqlite.SQLiteDatabase;import android.util.Log;import android.view.Menu;public class MainActivity extends Activity {     DbService mDbService;     private final String TAG = MainActivity.class.getSimpleName();     @Override     protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.activity_main);          mDbService = DbService.getInstance(this);          // Log.e(TAG, "已经插入数据个数:" + createPersonData().size());          mDbService.deleteAllData();          createPersonData();//          deletePer();          getDataWhere() ;     }     /**     * 删除年龄为100的person     */     public void deletePer() {          for (Iterator<Person> oo = getData().iterator(); oo.hasNext();) {               Person pp = oo.next();               if (pp.getAge().equals("100")) {                    mDbService.deletePerson(pp);               }          }          getData();     }     public List<Person> createPersonData() {          for (int i = 0; i < 10; i++) {               Person p = new Person();               p.setAge(99 + i + "");               p.setColor("红色"+i);               p.setDate(new Date());               p.setName("张三" + i);               mDbService.savePerson(p);          }          getData();          return mDbService.getAllPerson();     }     private List<Person> getDataWhere() {          System.out.println("**********************************************");          List<Person> dataperson;          dataperson = (List<Person>) mDbService.mPersonDao.queryBuilder().where(                    Properties.Age.between("100", "105"),Properties.Color.eq("红色3")).list();          for (int i = 0; i < dataperson.size(); i++) {               Log.e(TAG, dataperson.get(i).getAge());          }          System.out.println("**********************************************");          return dataperson;     }     private List<Person> getData() {          System.out.println("一共有" + mDbService.getAllPerson().size() + "条数据");          for (Iterator<Person> ii = mDbService.getAllPerson().iterator(); ii                    .hasNext();) {               Log.e(TAG, "年龄=" + "\n" + ii.next().getAge());          }          return mDbService.getAllPerson();     }     @Override     public boolean onCreateOptionsMenu(Menu menu) {          // Inflate the menu; this adds items to the action bar if it is present.          getMenuInflater().inflate(R.menu.main, menu);          return true;     }}

其它详情,具体操作
参考文章:http://greendao-orm.com/documentation/how-to-get-started/
                 http://my.oschina.net/cheneywangc/blog/196354
                 http://www.w2bc.com/Article/20726



0 0
原创粉丝点击