greenDAO 优势
1、一个精简的库
2、性能最大化
3、内存开销最小化
4、易于使用的 APIs
5、对 Android 进行高度优化
1.在build.gradle中进行配置,也就是项目的根路径添加依赖
- <span style="font-size:18px;">buildscript {
- repositories {
- google()
- jcenter()
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:3.0.1'
- classpath 'com.jakewharton:butterknife-gradle-plugin:8.4.0'
- classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin
- // NOTE: Do not place your application dependencies here; they belong
- // in the individual module build.gradle files
- }
- }</span>
// 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.写工具类
- <span style="font-size:18px;">public class GreenDaoUtils {
- private static GreenDaoUtils greenDaoUtils;
- private DaoMaster daoMaster;
- private DaoSession daoSession;
- private DaoMaster.DevOpenHelper devOpenHelper;
- private SQLiteDatabase database;
- //双重检验锁单例模式
- public static GreenDaoUtils getGreendaoutils(){
- if(greenDaoUtils==null){
- synchronized (GreenDaoUtils.class){
- if(greenDaoUtils==null){
- greenDaoUtils=new GreenDaoUtils();
- }
- }
- }
- return greenDaoUtils;
- }
- //调用初始化的方法
- public void init(){
- setDatebase();
- }
- //初始化greendao生成的几个重要对象
- public void setDatebase(){
- devOpenHelper=new DaoMaster.DevOpenHelper(MyApp.context,"Zou",null);
- database=devOpenHelper.getWritableDatabase();
- daoMaster=new DaoMaster(database);
- daoSession=daoMaster.newSession();
- }
- public DaoSession getDaoSession(){
- return daoSession;
- }
- public SQLiteDatabase getDatabase(){
- return database;
- }
- }</span>
- <span style="font-size:18px;">public class MyApp extends Application {
- public static Context context;
- @Override
- public void onCreate() {
- super.onCreate();
- context=getApplicationContext();
- GreenDaoUtils.getGreendaoutils().init();
- }
- }</span>
- <span style="font-size:18px;">public class MainActivity extends AppCompatActivity {
- @BindView(R.id.lv)
- ListView lv;
- private UserDao userDao;
- int aa;
- int bb;
- int cc;
- private List<User> users;
- private MyAdaper m;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- ButterKnife.bind(this);
- //拿到操作者
- DaoSession daoSession = GreenDaoUtils.getGreendaoutils().getDaoSession();
- //拿到执行者
- userDao = daoSession.getUserDao();
- users = userDao.loadAll();
- m = new MyAdaper(this,users);
- lv.setAdapter(m);
- }
- @OnClick({R.id.dan,R.id.pl,R.id.xiu,R.id.shan,R.id.cha1,R.id.cha2,R.id.fenye})
- public void btn(View v){
- switch (v.getId()){
- case R.id.dan:
- //单条添加
- userDao.insert(new User("小于"+(++aa),"24",null));
- show();
- break;
- case R.id.pl:
- //批量添加
- for (int i = 10; i < 31; i++) {
- userDao.insert(new User("小于"+i,"24",null));
- }
- show();
- break;
- case R.id.xiu:
- //修改
- userDao.update(new User("小庄","25", (long) (++bb)));
- show();
- break;
- case R.id.shan:
- //删除
- userDao.deleteByKey((long) ++cc);
- show();
- break;
- case R.id.cha1:
- //查询主键下单条数据
- Query<User> build = userDao.queryBuilder()
- .where(UserDao.Properties.Id.eq(20))
- .build();
- users = build.list();
- m = new MyAdaper(this,users);
- lv.setAdapter(m);
- break;
- case R.id.cha2:
- //查询所有
- show();
- break;
- case R.id.fenye:
- //分页查询
- Query<User> build1 = userDao.queryBuilder().offset(10).limit(20).build();
- users=build1.list();
- m = new MyAdaper(this,users);
- lv.setAdapter(m);
- break;
- }
- }
- //查询的方法
- public void show(){
- users = userDao.loadAll();
- m = new MyAdaper(this,users);
- lv.setAdapter(m);
- }
- }</span>