
正文
android数据保存之greendao
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
有时我们的数据属于保存到数据库,对于Android应用和IOS应用,我们一般都会使用SQLite这个嵌入式的数据库作为我们保存数据的工具。由于我们直接操作数据库比较麻烦,而且管理起来也非常的麻烦,以前用ormlite,最近项目尝试用greendao来保存数据。

使用gradle导入greendao包和greendao-generator包并配置我们的路径
其中greendao用于我们操作数据库的类。而greendao-generator是用来产生我们的的数据库的数据类。包含了Bean、DAO、DaoMaster、DaoSession 。
我们在项目配置文件中添加如下代码:
compile 'org.greenrobot:greendao:3.0.1'
compile 'org.greenrobot:greendao-generator:3.0.0'

在src/main下创建一个java-gen的包,用于生成我们的bean类文件

创建Dao的生成类文件YeehotGeneratorDao.java,用于生成上面说的几个类。这里我直接在项目里面创建了。

<span style="font-size:14px;">public class YeehotGeneratorDao {public static void main(String[] args) throws Exception {//DB_VESION,BEAN 版本号与 包路径Schema schema = new Schema(1, "com.yeehot.greendao");addTable(schema);//第二个参数是我们刚刚的包db的路径。new DaoGenerator().generateAll(schema, "/Users/yeehot/Desktop/a/GreendaoInfo/app/src/main/java-gen");}private static void addTable(Schema schema) {// 创建一个实体,其实就是表名Entity User = schema.addEntity("User");//添加表的属性。User.addIdProperty();//添加字符串的属性User.addStringProperty("email").notNull();User.addStringProperty("passwd");User.addStringProperty("userid");}}</span>
运行一下YeehotGeneratorDao


怎么用呢
<span style="font-size:14px;">package com.yeehot.greendaoinfo;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.EditText;import com.yeehot.greendaoinfo.db.DaoMaster;import com.yeehot.greendaoinfo.db.DaoSession;import com.yeehot.greendaoinfo.db.User;import com.yeehot.greendaoinfo.db.UserDao;import org.greenrobot.greendao.generator.Query;import org.greenrobot.greendao.query.QueryBuilder;import java.text.DateFormat;import java.util.Date;import java.util.List;public class MainActivity extends AppCompatActivity {private SQLiteDatabase db;private DaoMaster daoMaster;private DaoSession daoSession;private Cursor cursor;private EditText email;private Button add;private Button search;private Button delete;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);email= (EditText) findViewById(R.id.email);add= (Button) findViewById(R.id.add);search= (Button) findViewById(R.id.search);delete= (Button) findViewById(R.id.delete);CreateDB();add.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {addEmail();}});search.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {FindEmail();}});delete.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {DeleteEmail();}});}private void CreateDB() {// DevOpenHelperDaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "yeehotdb", null);db = helper.getWritableDatabase();daoMaster = new DaoMaster(db);daoSession = daoMaster.newSession();}private void addEmail() {String emailinfo = email.getText().toString();// 插入操作,简单到只要你创建一个 Java 对象User note = new User(null,emailinfo,"1234","0001");daoSession.getUserDao().insert(note);}private void FindEmail() {Query query = daoSession.getUserDao().queryBuilder().where(UserDao.Properties.Email.eq(email.getText().toString())).orderAsc(UserDao.Properties.Id).build();List list=query.list();QueryBuilder.LOG_SQL = true;QueryBuilder.LOG_VALUES = true;}private void DeleteEmail() {// daoSession.getUserDao().deleteByKey(id);daoSession.getUserDao().deleteAll();}}</span><strong style="font-size: 16px;"></strong>








