GreenDao 简单使用

greenDAO 优势

1、一个精简的库
2、性能最大化
3、内存开销最小化
4、易于使用的 APIs
5、对 Android 进行高度优化

1.在build.gradle中进行配置,也就是项目的根路径添加依赖

[java]  view plain  copy
  1. <span style="font-size:18px;">buildscript {  
  2.       
  3.     repositories {  
  4.         google()  
  5.         jcenter()  
  6.     }  
  7.     dependencies {  
  8.         classpath 'com.android.tools.build:gradle:3.0.1'  
  9.         classpath 'com.jakewharton:butterknife-gradle-plugin:8.4.0'  
  10.         classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin  
  11.         // NOTE: Do not place your application dependencies here; they belong  
  12.         // in the individual module build.gradle files  
  13.     }  
  14. }</span>  
2.module中的build.gradle 进行添加

// In your app projects build.gradle file:
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' // apply plugin 

dependencies {
    compile 'org.greenrobot:greendao:3.2.2' // add library
}
3.
greendao {
    schemaVersion 1
    daoPackage 'com.bwie.myapplication.gen'//自己项目名和包名+gen
    targetGenDir 'src/main/java'
}
//使用

1.首先创建一个entity包,在创建一个bean类

2.make project 一下

3.会自动生成gen包

3.写工具类

[java]  view plain  copy
  1. <span style="font-size:18px;">public class GreenDaoUtils {  
  2.     private static GreenDaoUtils greenDaoUtils;  
  3.     private DaoMaster daoMaster;  
  4.     private DaoSession daoSession;  
  5.     private DaoMaster.DevOpenHelper devOpenHelper;  
  6.     private SQLiteDatabase database;  
  7.   
  8.     //双重检验锁单例模式  
  9.     public static GreenDaoUtils getGreendaoutils(){  
  10.         if(greenDaoUtils==null){  
  11.             synchronized (GreenDaoUtils.class){  
  12.                 if(greenDaoUtils==null){  
  13.                     greenDaoUtils=new GreenDaoUtils();  
  14.                 }  
  15.             }  
  16.         }  
  17.         return greenDaoUtils;  
  18.     }  
  19.     //调用初始化的方法  
  20.     public  void init(){  
  21.         setDatebase();  
  22.     }  
  23.   
  24.     //初始化greendao生成的几个重要对象  
  25.     public void setDatebase(){  
  26.         devOpenHelper=new DaoMaster.DevOpenHelper(MyApp.context,"Zou",null);  
  27.         database=devOpenHelper.getWritableDatabase();  
  28.         daoMaster=new DaoMaster(database);  
  29.         daoSession=daoMaster.newSession();  
  30.     }  
  31.   
  32.     public DaoSession getDaoSession(){  
  33.         return daoSession;  
  34.     }  
  35.     public SQLiteDatabase getDatabase(){  
  36.         return database;  
  37.     }  
  38.   
  39. }</span>  
5.创建MyApp类
[java]  view plain  copy
  1. <span style="font-size:18px;">public class MyApp extends Application {  
  2.     public static Context context;  
  3.     @Override  
  4.     public void onCreate() {  
  5.         super.onCreate();  
  6.         context=getApplicationContext();  
  7.         GreenDaoUtils.getGreendaoutils().init();  
  8.     }  
  9. }</span>  
6.实际操作

[java]  view plain  copy
  1. <span style="font-size:18px;">public class MainActivity extends AppCompatActivity {  
  2.     @BindView(R.id.lv)  
  3.     ListView lv;  
  4.     private UserDao userDao;  
  5.     int aa;  
  6.     int bb;  
  7.     int cc;  
  8.     private List<User> users;  
  9.     private MyAdaper m;  
  10.   
  11.     @Override  
  12.     protected void onCreate(Bundle savedInstanceState) {  
  13.         super.onCreate(savedInstanceState);  
  14.         setContentView(R.layout.activity_main);  
  15.         ButterKnife.bind(this);  
  16.         //拿到操作者  
  17.         DaoSession daoSession = GreenDaoUtils.getGreendaoutils().getDaoSession();  
  18.         //拿到执行者  
  19.         userDao = daoSession.getUserDao();  
  20.         users = userDao.loadAll();  
  21.         m = new MyAdaper(this,users);  
  22.         lv.setAdapter(m);  
  23.     }  
  24.     @OnClick({R.id.dan,R.id.pl,R.id.xiu,R.id.shan,R.id.cha1,R.id.cha2,R.id.fenye})  
  25.     public void btn(View v){  
  26.         switch (v.getId()){  
  27.             case R.id.dan:  
  28.                 //单条添加  
  29.                 userDao.insert(new User("小于"+(++aa),"24",null));  
  30.                 show();  
  31.                 break;  
  32.             case R.id.pl:  
  33.                 //批量添加  
  34.                 for (int i = 10; i < 31; i++) {  
  35.                     userDao.insert(new User("小于"+i,"24",null));  
  36.                 }  
  37.                 show();  
  38.                 break;  
  39.             case R.id.xiu:  
  40.                 //修改  
  41.                 userDao.update(new User("小庄","25", (long) (++bb)));  
  42.                 show();  
  43.                 break;  
  44.             case R.id.shan:  
  45.                 //删除  
  46.                 userDao.deleteByKey((long) ++cc);  
  47.                 show();  
  48.                 break;  
  49.             case R.id.cha1:  
  50.                 //查询主键下单条数据  
  51.                 Query<User> build = userDao.queryBuilder()  
  52.                         .where(UserDao.Properties.Id.eq(20))  
  53.                         .build();  
  54.                 users = build.list();  
  55.                 m = new MyAdaper(this,users);  
  56.                 lv.setAdapter(m);  
  57.                 break;  
  58.             case R.id.cha2:  
  59.                 //查询所有  
  60.                 show();  
  61.                 break;  
  62.             case R.id.fenye:  
  63.                 //分页查询  
  64.                 Query<User> build1 = userDao.queryBuilder().offset(10).limit(20).build();  
  65.                 users=build1.list();  
  66.                 m = new MyAdaper(this,users);  
  67.                 lv.setAdapter(m);  
  68.                 break;  
  69.         }  
  70.     }  
  71.   
  72.     //查询的方法  
  73.     public void show(){  
  74.         users = userDao.loadAll();  
  75.         m = new MyAdaper(this,users);  
  76.         lv.setAdapter(m);  
  77.     }  
  78. }</span>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值