1.project下的build.gradle
在classpath 'com.android.tools.build:gradle:3.0.0'下面添加
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'
2.app下的build.gradle
apply plugin: 'org.greenrobot.greendao'
greendao {
schemaVersion 1 //版本号
daoPackage 'com.zjrb.sjzsw.greendao' //自动生成文件的目录
targetGenDir 'src/main/java' //生成数据库文件的目录,默认根目录
}
3.在dependencies里面添加依赖
compile 'org.greenrobot:greendao:3.2.0'
4.创建MyApp继承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 getAppContext(){
return instances;
}
/**
* 设置greenDao
*/
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;
}
}
5.创建User类
@Entity
public class User {
@Id
private Long id;
private String uid;
private String name;
@Generated(hash = 1370059585)
public User(Long id, String uid, String name) {
this.id = id;
this.uid = uid;
this.name = name;
}
@Generated(hash = 586692638)
public User() {
}
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
public String getUid() {
return this.uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User{" + "id=" + id + ", uid='" + uid + '\'' + ", name='" + name + '\'' + '}';
}
}
6.在MainActivity里
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
/**
* 请输入用户id
*/
private EditText mEdId;
/**
* 请输入用户名
*/
private EditText mEdName;
/**
* 新增
*/
private Button mInsert;
/**
* 删除
*/
private Button mDelete;
/**
* 查询
*/
private Button mSelect;
private TextView mJieguo;
private String id;
private String name;
private UserDao dao;
private User user;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
dao = MyApp.getAppContext().getDaoSession().getUserDao();
}
private void initView() {
mEdId = findViewById(R.id.ed_id);
mEdName = findViewById(R.id.ed_name);
mInsert = findViewById(R.id.insert);
mInsert.setOnClickListener(this);
mDelete = findViewById(R.id.delete);
mDelete.setOnClickListener(this);
mSelect = findViewById(R.id.select);
mSelect.setOnClickListener(this);
mJieguo = findViewById(R.id.jieguo);
}
@Override
public void onClick(View v) {
id = mEdId.getText().toString();
name = mEdName.getText().toString();
user = new User(null, id, name);
switch (v.getId()) {
default:
break;
case R.id.insert:
dao.insert(user);
break;
case R.id.delete:
dao.delete(user);
break;
case R.id.select:
List<User> users = dao.loadAll();
mJieguo.setText(users.toString());
break;
}
}
}
布局文件-最外面嵌套LinearLayout
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="greenDao lib test"/>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:orientation="vertical">
<EditText
android:id="@+id/ed_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入用户id"/>
<EditText
android:id="@+id/ed_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入用户名"/>
<Button
android:id="@+id/insert"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="新增"/>
<Button
android:id="@+id/delete"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="删除"/>
<Button
android:id="@+id/select"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="查询"/>
</LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="查询结果"/>
</RelativeLayout>
<TextView
android:id="@+id/jieguo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="20dp"/>