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、
DaoMaster
package 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;
}
}
}