demo使用时看了别人的稍作修改更易懂,不多说,直接贴代码,仅用于学习
1、gradle导包
apply plugin: 'com.android.application' /** * 配置greendao3.1 */ apply plugin:'org.greenrobot.greendao' android { compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { applicationId "com.yueniu.greendao3_1" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } /** * 配置greendao3.1 */ greendao{ schemaVersion 4 daoPackage'com.yueniu.greendao3_1' targetGenDir'src/main/java' } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.4.0' compile 'org.greenrobot:greendao:3.1.1' compile 'org.greenrobot:greendao-generator:3.1.0' compile 'com.android.support:appcompat-v7:24.2.1' } /** * 配置greendao3.1 */ buildscript { repositories { jcenter() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.5.0' classpath 'org.greenrobot:greendao-gradle-plugin:3.1.1' } } 2、sql对象 package com.yueniu.greendao3_1; import android.database.sqlite.SQLiteDatabase; /** * Created by maoshenbo on 2016/9/22 13:23. */ public class GreenDaoUtils { private DaoMaster.DevOpenHelper mHelper; private SQLiteDatabase db; private DaoMaster mDaoMaster; private DaoSession mDaoSession; private static GreenDaoUtils greenDaoUtils; private GreenDaoUtils(){} public static GreenDaoUtils getSingleTon(){ if (greenDaoUtils==null){ greenDaoUtils=new GreenDaoUtils(); } return greenDaoUtils; } private void initGreenDao(){ mHelper=new DaoMaster.DevOpenHelper(MyApplication.getInstances(),"test-db",null); db=mHelper.getWritableDatabase(); mDaoMaster=new DaoMaster(db); mDaoSession=mDaoMaster.newSession(); } public DaoSession getmDaoSession() { if (mDaoMaster==null){ initGreenDao(); } return mDaoSession; } public SQLiteDatabase getDb() { if (db==null){ initGreenDao(); } return db; } } 3、 DaoMasterpackage com.yueniu.greendao3_1; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.util.Log; import org.greenrobot.greendao.AbstractDaoMaster; import org.greenrobot.greendao.database.StandardDatabase; import org.greenrobot.greendao.database.Database; import org.greenrobot.greendao.database.DatabaseOpenHelper; import org.greenrobot.greendao.identityscope.IdentityScopeType; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. /** * Master of DAO (schema version 4): knows all DAOs. */ public class DaoMaster extends AbstractDaoMaster { public static final int SCHEMA_VERSION = 4; /** Creates underlying database table using DAOs. */ public static void createAllTables(Database db, boolean ifNotExists) { UserDao.createTable(db, ifNotExists); } /** Drops underlying database table using DAOs. */ public static void dropAllTables(Database db, boolean ifExists) { UserDao.dropTable(db, ifExists); } /** * WARNING: Drops all table on Upgrade! Use only during development. * Convenience method using a {@link DevOpenHelper}. */ public static DaoSession newDevSession(Context context, String name) { Database db = new DevOpenHelper(context, name).getWritableDb(); DaoMaster daoMaster = new DaoMaster(db); return daoMaster.newSession(); } public DaoMaster(SQLiteDatabase db) { this(new StandardDatabase(db)); } public DaoMaster(Database db) { super(db, SCHEMA_VERSION); registerDaoClass(UserDao.class); } public DaoSession newSession() { return new DaoSession(db, IdentityScopeType.Session, daoConfigMap); } public DaoSession newSession(IdentityScopeType type) { return new DaoSession(db, type, daoConfigMap); } /** * Calls {@link #createAllTables(Database, boolean)} in {@link #onCreate(Database)} - */ public static abstract class OpenHelper extends DatabaseOpenHelper { public OpenHelper(Context context, String name) { super(context, name, SCHEMA_VERSION); } public OpenHelper(Context context, String name, CursorFactory factory) { super(context, name, factory, SCHEMA_VERSION); } @Override public void onCreate(Database db) { Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION); createAllTables(db, false); } } /** WARNING: Drops all table on Upgrade! Use only during development. */ public static class DevOpenHelper extends OpenHelper { public DevOpenHelper(Context context, String name) { super(context, name); } public DevOpenHelper(Context context, String name, CursorFactory factory) { super(context, name, factory); } @Override public void onUpgrade(Database db, int oldVersion, int newVersion) { Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables"); dropAllTables(db, true); onCreate(db); } } } 3、 DaoSession
package com.yueniu.greendao3_1; import java.util.Map; import org.greenrobot.greendao.AbstractDao; import org.greenrobot.greendao.AbstractDaoSession; import org.greenrobot.greendao.database.Database; import org.greenrobot.greendao.identityscope.IdentityScopeType; import org.greenrobot.greendao.internal.DaoConfig; import com.yueniu.greendao3_1.User; import com.yueniu.greendao3_1.UserDao; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. /** * {@inheritDoc} * * @see org.greenrobot.greendao.AbstractDaoSession */ public class DaoSession extends AbstractDaoSession { private final DaoConfig userDaoConfig; private final UserDao userDao; public DaoSession(Database db, IdentityScopeType type, Map<Class<? extends AbstractDao<?, ?>>, DaoConfig> daoConfigMap) { super(db); userDaoConfig = daoConfigMap.get(UserDao.class).clone(); userDaoConfig.initIdentityScope(type); userDao = new UserDao(userDaoConfig, this); registerDao(User.class, userDao); } public void clear() { userDaoConfig.clearIdentityScope(); } public UserDao getUserDao() { return userDao; } } 4、 User
package com.yueniu.greendao3_1; import org.greenrobot.greendao.annotation.Entity; import org.greenrobot.greendao.annotation.Generated; import org.greenrobot.greendao.annotation.Id; /** * Created by maoshenbo on 2016/9/22 13:21. */ @Entity public class User { @Id(autoincrement = true) private Long id; private String name; private int age; private boolean isBoy; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public boolean isBoy() { return isBoy; } public void setBoy(boolean boy) { isBoy = boy; } public boolean getIsBoy() { return this.isBoy; } public void setIsBoy(boolean isBoy) { this.isBoy = isBoy; } @Generated(hash = 1724489812) public User(Long id, String name, int age, boolean isBoy) { this.id = id; this.name = name; this.age = age; this.isBoy = isBoy; } @Generated(hash = 586692638) public User() { } }5、 UserDao
package com.yueniu.greendao3_1; import android.database.Cursor; import android.database.sqlite.SQLiteStatement; import org.greenrobot.greendao.AbstractDao; import org.greenrobot.greendao.Property; import org.greenrobot.greendao.internal.DaoConfig; import org.greenrobot.greendao.database.Database; import org.greenrobot.greendao.database.DatabaseStatement; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. /** * DAO for table "USER". */ public class UserDao extends AbstractDao<User, Long> { public static final String TABLENAME = "USER"; /** * Properties of entity User.<br/> * Can be used for QueryBuilder and for referencing column names. */ public static class Properties { public final static Property Id = new Property(0, Long.class, "id", true, "_id"); public final static Property Name = new Property(1, String.class, "name", false, "NAME"); public final static Property Age = new Property(2, int.class, "age", false, "AGE"); public final static Property IsBoy = new Property(3, boolean.class, "isBoy", false, "IS_BOY"); } public UserDao(DaoConfig config) { super(config); } public UserDao(DaoConfig config, DaoSession daoSession) { super(config, daoSession); } /** Creates the underlying database table. */ public static void createTable(Database db, boolean ifNotExists) { String constraint = ifNotExists? "IF NOT EXISTS ": ""; db.execSQL("CREATE TABLE " + constraint + "\"USER\" (" + // "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id "\"NAME\" TEXT," + // 1: name "\"AGE\" INTEGER NOT NULL ," + // 2: age "\"IS_BOY\" INTEGER NOT NULL );"); // 3: isBoy } /** Drops the underlying database table. */ public static void dropTable(Database db, boolean ifExists) { String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"USER\""; db.execSQL(sql); } @Override protected final void bindValues(DatabaseStatement stmt, User entity) { stmt.clearBindings(); Long id = entity.getId(); if (id != null) { stmt.bindLong(1, id); } String name = entity.getName(); if (name != null) { stmt.bindString(2, name); } stmt.bindLong(3, entity.getAge()); stmt.bindLong(4, entity.getIsBoy() ? 1L: 0L); } @Override protected final void bindValues(SQLiteStatement stmt, User entity) { stmt.clearBindings(); Long id = entity.getId(); if (id != null) { stmt.bindLong(1, id); } String name = entity.getName(); if (name != null) { stmt.bindString(2, name); } stmt.bindLong(3, entity.getAge()); stmt.bindLong(4, entity.getIsBoy() ? 1L: 0L); } @Override public Long readKey(Cursor cursor, int offset) { return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); } @Override public User readEntity(Cursor cursor, int offset) { User entity = new User( // cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // name cursor.getInt(offset + 2), // age cursor.getShort(offset + 3) != 0 // isBoy ); return entity; } @Override public void readEntity(Cursor cursor, User entity, int offset) { entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); entity.setName(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); entity.setAge(cursor.getInt(offset + 2)); entity.setIsBoy(cursor.getShort(offset + 3) != 0); } @Override protected final Long updateKeyAfterInsert(User entity, long rowId) { entity.setId(rowId); return rowId; } @Override public Long getKey(User entity) { if(entity != null) { return entity.getId(); } else { return null; } } @Override public boolean hasKey(User entity) { return entity.getId() != null; } @Override protected final boolean isEntityUpdateable() { return true; } }6、使用
package com.yueniu.greendao3_1; import android.database.Cursor; 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.TextView; import java.util.List; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private String TAG = "MainActivity"; TextView text, text2; UserDao dao; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); dao = GreenDaoUtils.getSingleTon().getmDaoSession().getUserDao(); Button zeng = (Button) findViewById(R.id.zeng); Button shan = (Button) findViewById(R.id.shan); Button gai = (Button) findViewById(R.id.gai); Button cha = (Button) findViewById(R.id.cha); text = (TextView) findViewById(R.id.text); text2 = (TextView) findViewById(R.id.text2); zeng.setOnClickListener(this); shan.setOnClickListener(this); gai.setOnClickListener(this); cha.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.zeng: User insertData=new User(null,"77",21,false); dao.insert(insertData); text.setText(insertData.getName()); break; case R.id.shan: /* List<User> list = dao.loadAll(); for(int i=0;i<list.size();i++){ //dao.deleteInTx(list); dao.deleteByKey(list.get(i).getId()); }*/ Cursor cursor = GreenDaoUtils.getSingleTon().getDb().rawQuery("select * from USER where name=?", new String[]{"77"}); dao.deleteByKey(dao.readEntity(cursor, 1).getId()); //User user = dao.load((long)2); // String s = text.getText().toString(); // long l = Long.parseLong(s); // dao.deleteByKey(l); //dao.deleteByKey((long)2); break; case R.id.gai: List<User> userss = dao.loadAll(); User user=new User(userss.get(0).getId(),"88",22,true); dao.update(user); text.setText(user.getName()); break; case R.id.cha: List<User> users = dao.loadAll(); Log.i(TAG, "users.size="+users.size()); for (int i=0;i<users.size();i++){ Log.i("woyaokk","结果:"+users.get(i).getName().toString()); } break; } } }
