关于GreenDao
greenDao是一个将对象映射到SQLite数据库,属于关系型数据库,。相对于android SQlite更好用简单易用,性能强大,如果不会数据库都不好意思说安卓开发了。
SQLite
public class SQLKeyWord extends SQLiteOpenHelper {
/**
*数据库名称
*/
public staticStringSQLNAME="keyword.db";
/**
*表名
*/
public staticStringTABLENAME="search_table";
/**
*字段
*/
public staticStringSEARCH_KEYWORD="keyword";
public staticStringSEARCH_ID="search_id";
publicSQLKeyWord(Context context) {
super(context,SQLNAME, null,1);
}
@Override
public voidonCreate(SQLiteDatabase db) {
//创建表
String sql ="create table "+TABLENAME+"(_id integer primary key, "+SEARCH_KEYWORD+" varchar(10) not null,"+SEARCH_ID+" VARCHAR)";
//执行SQL语句
db.execSQL(sql);
}
/**
*添加对象
*/
public voidinsert(KeyWordBean bean) {
//得到SQLiteDatabase对象
SQLiteDatabase writableDatabase = getWritableDatabase();
//实例化内容对象
ContentValues values =newContentValues();
//写入数据(键:字段;值)
values.put(SEARCH_KEYWORD,bean.getKeyword());
values.put(SEARCH_ID,bean.getSearch_id());
//通过sql对象插入数据(表名,null,内容对象)
writableDatabase.insert(TABLENAME, null,values);
//关闭数据库对象
writableDatabase.close();
}
/**
*删除数据
*/
public voiddelete() {
//得到SQLitemDatabase对象
SQLiteDatabase writableDatabase = getWritableDatabase();
//通过sql对象删除数据(表名,删除的条件,删除的条件值)
// writableDatabase.delete(TABLENAME, NAME + "=?", new String[]{"zhangsan"});
writableDatabase.delete(TABLENAME, null, null);//删除整表
//关闭数据库
writableDatabase.close();
}
/**
*查询
*
*@return
*/
publicListquery() {
List list =newArrayList<>();
List list2 =newArrayList<>();
//得到SQLitemDatabase对象
SQLiteDatabase sql = getReadableDatabase();
//得到游标对象(表名,查询的列明,查询的条件,查询的条件值,分组,分组的条件,排序)
Cursor cursor = sql.query(TABLENAME, null, null, null, null, null, null);
while(cursor.moveToNext()) {
KeyWordBean keyWordBean =newKeyWordBean();
//得到数据
String search_keyword = cursor.getString(cursor.getColumnIndex(SEARCH_KEYWORD));
String search_id = cursor.getString(cursor.getColumnIndex(SEARCH_ID));
keyWordBean.setSearch_id(search_id);
keyWordBean.setKeyword(search_keyword);
if(!CommonUntil.isEmpty(search_keyword)) {
list.add(keyWordBean);
}
}
HashSet h =newHashSet(list);
list2.addAll(h);
returnlist2;
}
@Override
public voidonUpgrade(SQLiteDatabase db, intoldVersion, intnewVersion) {
}
}
GreenDao
1,在app gradle dependencies添加
compile'org.greenrobot:greendao:3.0.1'
compile'org.greenrobot:greendao-generator:3.0.0'
在gradle头部添加applyplugin:'org.greenrobot.greendao'//添加
2,在project gradle dependencies中进行配置
dependencies {
classpath'org.greenrobot:greendao-gradle-plugin:3.0.0'
}
3.app gradle 增加路径
greendao {
schemaVersion1//数据库版本号
daoPackage'zy.app.org.myapplication.dao'//生成的dao路径
targetGenDir'src/main/java'//数据库文件的目录
}```
##4.新建数据库实体类
使用@Entity关键字
import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.Property;
import org.greenrobot.greendao.annotation.Generated;
@Entity
public classUserInfo {
@Id
privateLong id;
@Property(nameInDb="USERNAME")
private String username;
@Property(nameInDb="NICKNAME")
private String nickname;
}
##5,MakeProject
as菜单栏的build->make project 实体类自动生成set get方法
![](https://img.haomeiwen.com/i2203203/5a3108c278856c45.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
#Greendao使用
####Application类
public class MyApp extends Application {
private DaoMaster.DevOpenHelper mHelper;
private SQLiteDatabase db;
private DaoMaster mDaoMaster;
private DaoSession mDaoSession;
public static MyApp instances;
@Override
public void onCreate() {
super.onCreate();
instances=this;
setDatabase();
}
public static MyApp getInstances() {
returninstances;
}
private void set Database() {
//通过DaoMaster的内部类DevOpenHelper,你可以得到一个便利的SQLiteOpenHelper对象。
//可能你已经注意到了,你并不需要去编写「CREATE TABLE」这样的SQL语句,因为greenDAO已经帮你做了。
//注意:默认的DaoMaster.DevOpenHelper会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。
//所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。
mHelper=newDaoMaster.DevOpenHelper(this,"demo_db", null);
db=mHelper.getWritableDatabase();
//注意:该数据库连接属于DaoMaster,所以多个Session指的是相同的数据库连接。
mDaoMaster=newDaoMaster(db);
mDaoSession=mDaoMaster.newSession();
}
publicDaoSessiongetDaoSession() {
returnmDaoSession;
}
publicSQLiteDatabasegetDb() {
returndb;
}
}```
Dao对象获取
mUserDao = MyApplication.getInstances().getDaoSession().getUserDao();
简单的增删改查实现:
1. 增
mUser =newUser((long)2,"anye3");mUserDao.insert(mUser);//添加一个```
####2. 删
mUserDao.deleteByKey(id);```
3. 改
mUser =newUser((long)2,"anye0803");mUserDao.update(mUser);```
####4. 查
List users = mUserDao.loadAll();
String userName ="";
for(inti =0; i < users.size(); i++) {
userName += users.get(i).getName()+",";
}
mContext.setText("查询全部数据==>"+userName);```
网友评论