有时我们的数据属于保存到数据库,对于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; @Override protected 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() { @Override public void onClick(View v) { addEmail(); } }); search.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { FindEmail(); } }); delete.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { DeleteEmail(); } }); } private void CreateDB() { // DevOpenHelper DaoMaster.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>