GreenDao的简单使用
程序员文章站
2022-03-20 14:51:32
...
1. 添加依赖
1.1在项目的gradle里面的repositories添加
mavenCentral()
1.2 在项目的gradle里面的dependencies添加
classpath 'com.android.tools.build:gradle:3.1.1'
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin
1.3 在medo的gradle里面的android添加
greendao{
schemaVersion 1
daoPackage 'com.greendao.gen'
targetGenDir 'src/main/java'
}
1.4在medo的gradle里面的最上添加
apply plugin: 'org.greenrobot.greendao'
1.5在medo的gradle里面的dependencies添加
implementation 'org.greenrobot:greendao:3.2.2'
2.在Application里面写入
package com.example.greendao;
import android.app.Application;
import android.database.sqlite.SQLiteDatabase;
import com.greendao.gen.DaoMaster;
import com.greendao.gen.DaoSession;
public class MyApplication extends Application {
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;
}
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;
}
}
3.写javaBean
@Entity //表示这个实体类一会会在数据库中生成对应的表
public class User {
@Id // 表示该字段是id,注意该字段的数据类型为包装类型Long
private Long id;
@Property(nameInDb = "NAME") //则表示该属性将作为表的一个字段,其中nameInDb看名字就知道这个属性在数据库中对应的数据名称。
private String name;
@Transient //该注解表示这个属性将不会作为数据表中的一个字段。
private int tempUsageCount; // not persisted
}
写完之后按Shift+F12进行自动编写greenDao
4进行增删改查
package com.example.greendao;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.greendao.gen.UserDao;
import org.greenrobot.greendao.query.QueryBuilder;
import org.greenrobot.greendao.query.WhereCondition;
import java.util.List;
import java.util.Random;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button zeng;
private Button shan;
private Button gai;
private Button cha;
private UserDao mUserDao;
private TextView mContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
mUserDao = MyApplication.getInstances().getDaoSession().getUserDao();
}
private void initView() {
zeng = (Button) findViewById(R.id.zeng);
shan = (Button) findViewById(R.id.shan);
gai = (Button) findViewById(R.id.gai);
cha = (Button) findViewById(R.id.cha);
zeng.setOnClickListener(this);
shan.setOnClickListener(this);
gai.setOnClickListener(this);
cha.setOnClickListener(this);
mContext = (TextView) findViewById(R.id.mContext);
mContext.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.zeng:
for (int i = 0; i < 10; i++) {
Random mrandom = new Random();
int m = mrandom.nextInt();
User mUser = new User((long) i, "anye3"+m);
mUserDao.insert(mUser);//添加一个\
//mUserDao.insertOrReplace(mUser);
}
//mUserDao.insertOrReplace(mUser);//insertOrReplace()数据存在则替换,数据不存在则插入
break;
case R.id.shan:
//mUserDao.deleteByKey((long)2);// 删除id
//daoSession.delete(s);
mUserDao.deleteAll();
//删除有两种方式:删除()和deleteAll();分别表示删除单个和删除所有。
break;
case R.id.gai:
User mUser = new User((long) 2, "anye0803");
mUserDao.update(mUser);
break;
case R.id.cha:
//LOADALL():查询所有数据。
//queryRaw():根据条件查询。 List<User> user = daoSession.queryRaw(User.class, " where id = ?", s);
List<User> users = mUserDao.loadAll();
String userName = "";
QueryBuilder<User> qb = mUserDao.queryBuilder();
//List<User> list1 = qb.list();
List<User> list = qb.orderDesc(UserDao.Properties.Id).list();
//qb.where(new WhereCondition.StringCondition("")).list();
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < list.size(); i++) {
String name = list.get(i).getName();
stringBuffer.append(name);
}
mContext.setText("查询全部数据==>" + stringBuffer);
/*for (int i = 0; i < users.size(); i++) {
userName += users.get(i).getName() + ",";
}
mContext.setText("查询全部数据==>" + userName);*/
break;
}
}
}
相关博客:https://blog.csdn.net/CrazyMo_/article/details/54629916
https://blog.csdn.net/qq_25412055/article/details/52795295\
https://www.jianshu.com/p/53083f782ea2
下一篇: 详解Vue-axios 设置请求头问题