GreenDao的简单存储

来源:互联网 发布:java基础环境搭建 编辑:程序博客网 时间:2024/06/03 19:57

先简单的介绍一下greendao的特征:
greenDAO的独特的功能集:
介绍:greenDAO自2011年以来一直使用,并被无数的着名应用程序使用
超简单:简明直观的API,在V3中带有注释
小:库是<150K,它只是纯Java jar(没有CPU依赖的本地部分)
快速:可能是Android中最快的ORM,由智能代码生成驱动
安全和表达式查询API:QueryBuilder使用属性常量来避免打印错误
强大的连接:跨实体查询,甚至链接连接的复杂关系
灵活的属性类型:使用自定义类或枚举来表示实体中的数据
加密:支持SQLCipher加密数据库
现在再给大家介绍一下greendao的用法:我们首先要导入一些依赖:
最大的build里要填:
buildscript {

repositories {
google()
jcenter()
mavenCentral():要填的greendao
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0'
classpath greendao的用法:'org.greenrobot:greendao-gradle-plugin:3.2.1'
}
小build的要填的:
//greendao
apply plugin: 'org.greenrobot.greendao'
implementation 'org.greenrobot:greendao:3.2.0'
再来写一下xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_margin="10dp"
android:text="greenDao lib test"
android:textColor="@android:color/black" />

<EditText
android:id="@+id/etId"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入用户id"
android:inputType="number"
android:textSize="15sp" />

<EditText
android:id="@+id/etName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入用户名"
android:textSize="15sp" />

<Button
android:id="@+id/btnAdd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="新增" />

<Button
android:id="@+id/btnDelete"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="删除" />

<Button
android:id="@+id/btnQuery"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="查询" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_margin="10dp"
android:text="查询结果"
android:textColor="@android:color/black" />

<TextView
android:id="@+id/tvQuery"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_margin="10dp"
android:textColor="@android:color/black" />
</LinearLayout>
MainActivity中的代码:
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import org.greenrobot.greendao.query.QueryBuilder;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
UserDao userDao;
private EditText etId;
private EditText etName;
private Button btnAdd;
private Button btnDelete;
private Button btnQuery;
private TextView tvQuery;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initDbHelp();

/*新增一条数据*/
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String id = etId.getText().toString();
String name = etName.getText().toString();
if (isNotEmpty(id) && isNotEmpty(name)) {
QueryBuilder qb = userDao.queryBuilder();
ArrayList<User> list = (ArrayList<User>) qb.where(UserDao.Properties.Id.eq(id)).list();
if (list.size() > 0) {
Toast.makeText(MainActivity.this, "主键重复", Toast.LENGTH_SHORT).show();
} else {
userDao.insert(new User(Long.valueOf(id), name));
Toast.makeText(MainActivity.this, "插入数据成功", Toast.LENGTH_SHORT).show();
}
} else {
if (isEmpty(id) && isNotEmpty(name)) {
Toast.makeText(MainActivity.this, "id为空", Toast.LENGTH_SHORT).show();
}
if (isEmpty(name) && isNotEmpty(id)) {
Toast.makeText(MainActivity.this, "姓名为空", Toast.LENGTH_SHORT).show();
}
if (isEmpty(id) && isEmpty(name)) {
Toast.makeText(MainActivity.this, "请填写信息", Toast.LENGTH_SHORT).show();
}

}
etId.setText("");
etName.setText("");
}
});

/*删除指定数据*/
btnDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String id = etId.getText().toString();
if (isNotEmpty(id)) {
userDao.deleteByKey(Long.valueOf(id));
QueryBuilder qb = userDao.queryBuilder();
ArrayList<User> list = (ArrayList<User>) qb.where(UserDao.Properties.Id.eq(id)).list();
if (list.size() < 1) {
Toast.makeText(MainActivity.this, "删除数据成功", Toast.LENGTH_SHORT).show();
etId.setText("");
etName.setText("");
}
} else {
Toast.makeText(MainActivity.this, "id为空", Toast.LENGTH_SHORT).show();
}
}
});

/*查询数据*/
btnQuery.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String id = etId.getText().toString();
if (isNotEmpty(id)) {
QueryBuilder qb = userDao.queryBuilder();
ArrayList<User> list = (ArrayList<User>) qb.where(UserDao.Properties.Id.eq(id)).list();
if (list.size() > 0) {
String text = "";
for (User user : list) {
text = text + "\r\n" + user.getName();
}
tvQuery.setText(text);
} else {
tvQuery.setText("");
Toast.makeText(MainActivity.this, "不存在该数据", Toast.LENGTH_SHORT).show();
}
etId.setText("");
etName.setText("");
} else {
Toast.makeText(MainActivity.this, "id为空", Toast.LENGTH_SHORT).show();
}
}
});
}

/*初始化数据库相关*/
private void initDbHelp() {
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "recluse-db", null);
SQLiteDatabase db = helper.getWritableDatabase();
DaoMaster daoMaster = new DaoMaster(db);
DaoSession daoSession = daoMaster.newSession();
userDao = daoSession.getUserDao();
}

private void initView() {
etId = (EditText) findViewById(R.id.etId);
etName = (EditText) findViewById(R.id.etName);
btnAdd = (Button) findViewById(R.id.btnAdd);
btnDelete = (Button) findViewById(R.id.btnDelete);
btnQuery = (Button) findViewById(R.id.btnQuery);
tvQuery = (TextView) findViewById(R.id.tvQuery);
}

private boolean isNotEmpty(String s) {
if (s != null && !s.equals("") || s.length() > 0) {
return true;
} else {
return false;
}
}

private boolean isEmpty(String s) {
if (isNotEmpty(s)) {
return false;
} else {
return true;
}
}
}
Bean类:
import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.Generated;

@Entity
public class User {
@Id(autoincrement = true)
private long id;
private String name;
@Generated(hash = 1144922831)
public User(long id, String name) {
this.id = id;
this.name = name;
}
@Generated(hash = 586692638)
public User() {
}
public long getId() {
return this.id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
}

原创粉丝点击