// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.3.1' classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() } } task clean(type: Delete) { delete rootProject.buildDir }
apply plugin: 'com.android.application' apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 26 buildToolsVersion "27.0.1" defaultConfig { applicationId "com.bwie.greendaolian" minSdkVersion 16 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" greendao { schemaVersion 1 daoPackage 'com.bwie.greendaolian.gen' targetGenDir 'src/main/java' } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:26.+' compile 'com.android.support.constraint:constraint-layout:1.0.2' testCompile 'junit:junit:4.12' compile'org.greenrobot:greendao:3.0.1' compile'org.greenrobot:greendao-generator:3.0.0' annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1' compile 'com.jakewharton:butterknife:8.8.1' }
package com.bwie.greendaolian; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.Toast; import com.bwie.greendaolian.gen.UserDao; import org.greenrobot.greendao.generator.Entity; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; public class MainActivity extends AppCompatActivity { @BindView(R.id.bt) Button bt; @BindView(R.id.bt2) Button bt2; @BindView(R.id.bt3) Button bt3; @BindView(R.id.bt4) Button bt4; private User mUser; private Long id; private UserDao mUserDao; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); mUserDao = MyApplication.getInstances().getDaoSession().getUserDao(); } @OnClick({R.id.bt, R.id.bt2, R.id.bt3, R.id.bt4}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.bt: mUser = new User(null,"张三"); mUserDao.insert(mUser);//添加一个 break; case R.id.bt2: // List<User> userList = (List<User>) mUserDao.queryBuilder().where(UserDao.Properties.Id.le(20)).build().list(); // for (User user : userList) { // mUserDao.delete(user); // } mUserDao.deleteAll(); break; case R.id.bt3: mUser = new User((long)2,"anye0803"); mUserDao.update(mUser); break; case R.id.bt4: List<User> users = mUserDao.loadAll(); String userName = ""; for (int i = 0; i < users.size(); i++) { userName += users.get(i).getName()+","; } Toast.makeText(this,userName, Toast.LENGTH_SHORT).show(); break; } } }
package com.bwie.greendaolian; import android.app.Application; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import com.bwie.greendaolian.gen.DaoMaster; import com.bwie.greendaolian.gen.DaoSession; public class MyApplication extends Application { public static Context context; private DaoMaster.DevOpenHelper mHelper; private SQLiteDatabase db; private DaoMaster mDaoMaster; private DaoSession mDaoSession; public static MyApplication instances; @Override public void onCreate() { super.onCreate(); instances = this; setDatabase(); } public static MyApplication getInstances(){ return instances; } /** * 设置greenDao */ private void setDatabase() { // 通过 DaoMaster 的内部类 DevOpenHelper,你可以得到一个便利的 SQLiteOpenHelper 对象。 // 可能你已经注意到了,你并不需要去编写「CREATE TABLE」这样的 SQL 语句,因为 greenDAO 已经帮你做了。 // 注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。 // 所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。 mHelper = new DaoMaster.DevOpenHelper(this, "notes-db", null); db = mHelper.getWritableDatabase(); // 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。 mDaoMaster = new DaoMaster(db); mDaoSession = mDaoMaster.newSession(); } public DaoSession getDaoSession() { return mDaoSession; } public SQLiteDatabase getDb() { return db; } }
package com.bwie.greendaolian; import org.greenrobot.greendao.annotation.Entity; import org.greenrobot.greendao.annotation.Id; import org.greenrobot.greendao.annotation.Transient; import org.greenrobot.greendao.annotation.Generated; /** * Created by lenovo on 2017/11/30. */ @Entity public class User { @Id(autoincrement =true) private Long id; private String name; @Transient private int tempUsageCount; // not persisted public String getName() { return this.name; } public void setName(String name) { this.name = name; } public Long getId() { return this.id; } public void setId(Long id) { this.id = id; } @Generated(hash = 873297011) public User(Long id, String name) { this.id = id; this.name = name; } @Generated(hash = 586692638) public User() { } }