提高android数据库性能,GreenDao初步使用
来源:互联网 发布:经营业绩怎么写数据 编辑:程序博客网 时间:2024/09/21 09:28
前言
基本上android开发都会用到数据库,数据库的出现就是为了缓存数据,但是一但我们的数据很多很多的时候呢?哪该怎么处理呢,所以最近我在网上了解了下一些有关android数据库的框架,发现有那么几款数据库框架的。我初步对比了一下,发现GrennDao还是非常不错的。
优点:
强大的API,丰富的功能
内存消耗小
高性能
缺点:
- 前奏比较长(搭建)
但我相信这个应该不会难倒我们这些热爱新技术的小青年的
开工
这里用的IDE是android studio,还在用eclipse的小伙伴赶快换上吧!首先在我们java同等级目录下新建一个文件夹 java-gen![这里写图片描述](http://img.blog.csdn.net/20160118094923004) 然后在我们gradle里面配置一下 buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' }}sourceSets{ main{ java.srcDirs = ['src/main/java','src/main/java-gen'] }}}dependencies {compile fileTree(include: ['*.jar'], dir: 'libs')testCompile 'junit:junit:4.12'compile 'com.android.support:appcompat-v7:23.1.1'compile 'de.greenrobot:greendao:2.0.0' //配置GreenDao
}
在我们project里面新建一个library,gradle里面配置下:
dependencies {
compile fileTree(dir: ‘libs’, include: [‘*.jar’])
compile ‘de.greenrobot:greendao-generator:2.0.0’
}
然后新建一个java类,都有详细注释
import de.greenrobot.daogenerator.DaoGenerator;import de.greenrobot.daogenerator.Entity;import de.greenrobot.daogenerator.Schema;public class GreenDaoGenerator {public static void main(String [] args) throws Exception{ //创建一个用于添加实体的Schema对象,第一个参数表示数据库的版本,第二个参数表示在java-gen目录下自动生成的实体类和DAO类存放的包名 Schema schema=new Schema(1,"greendao"); //schema.setDefaultJavaPackageDao("com.smile.dao");//假如你不想实体类和DAO类都放在一个包中,你可以重新为DAO类设置一个新的包 Entity entity=schema.addEntity("User");//创建一个实体,一个实体对应一张表,此处表示生成的实体名为Student,同样它默认也是表名 entity.addIdProperty().autoincrement().primaryKey(); entity.addStringProperty("name"); entity.addIntProperty("age"); entity.addBooleanProperty("is_man"); //最后通过DaoGenerator对象的generateAll()方法来生成相应的实体类和DAO类,参数分别为Schema对象和java-gen目录路径 new DaoGenerator().generateAll(schema,"../GreenDAO/app/src/main/java-gen"); }}
然后运行我们的这个java类,它会在开始我们建的java-gen里面生成几个java类
以上都是我们的配置工作,既然配置工作都做好了,那么对数据库的操作就非常简单了。
这是布局图,很简单的,代码我就不贴了。
最后就是我们编写activity了,我这里没有对输入的内容进行处理,一旦输入的内容不合法很容易出现崩溃,仅仅只是测试用。
public class MainActivity extends AppCompatActivity {private DaoSession session;private DaoMaster.DevOpenHelper helper;private UserDao userDao;private DaoMaster master;private EditText meditText;private ListView mlistView;private SimpleCursorAdapter adapter;private SQLiteDatabase db;private Cursor cursor;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); meditText= (EditText) findViewById(R.id.edt_content); mlistView= (ListView) findViewById(R.id.listview); helper=new DaoMaster.DevOpenHelper(MainActivity.this,"user-db",null); db=helper.getWritableDatabase(); master=new DaoMaster(db); session=master.newSession(); //得到StudentDAO对象,所以在这看来,对于这三个DAO文件,我们更能接触到的是StudentDao文件,进行CRUD操作也是通过StudentDao对象来操作 userDao=session.getUserDao(); //遍历查询数据 cursor=db.query(userDao.getTablename(),userDao.getAllColumns(),null,null,null,null,null); String [] from={UserDao.Properties.Name.columnName,UserDao.Properties.Age.columnName}; int[] to = {android.R.id.text1, android.R.id.text2}; adapter=new SimpleCursorAdapter(this,android.R.layout.simple_list_item_1,cursor,from,to, SimpleAdapter.NO_SELECTION); mlistView.setAdapter(adapter);}public void click(View v){ switch (v.getId()){ case R.id.btn_add: add(); Cursor cursor=db.query(userDao.getTablename(),userDao.getAllColumns(),null,null,null,null,null); adapter.swapCursor(cursor);//交换cursor数据集刷新UI break; case R.id.btn_update: update(); Cursor cursor1=db.query(userDao.getTablename(),userDao.getAllColumns(),null,null,null,null,null); adapter.swapCursor(cursor1);//交换cursor数据集刷新UI break; case R.id.btn_delete: delete(); Cursor cursor2=db.query(userDao.getTablename(),userDao.getAllColumns(),null,null,null,null,null); adapter.swapCursor(cursor2);//交换cursor数据集刷新UI break; case R.id.btn_search: search(); break; }}private void add(){ String content=meditText.getText().toString().trim(); User user=new User(null,content,20,true);//由于主键id之前设置了自增长,所以传入null即可 userDao.insert(user);}private void delete(){ String content=meditText.getText().toString().trim(); userDao.deleteByKey(Long.valueOf(content));//通过主键删除某条数据 //删除全部数据 //userDao.deleteAll();}private void update(){ String content=meditText.getText().toString().trim(); String update_content="新内容++++++"; //update只能通过主键来更新某个实体对应的数据,这里的主键为id userDao.update(new User(Long.valueOf(content),update_content,22,false));}private void search(){ String content=meditText.getText().toString().trim(); //通过queryBuilder()来查询可以更方便的设置查询的条件,其中eq()方法表示equal(),判断Name是否和content相等,然后通过build建立查询 Query<User> query=userDao.queryBuilder().where(UserDao.Properties.Name.eq(content)).build(); List<User> list=query.list(); //下面两个Flag的设置可以在控制台中打印出此次查询的sql语句和value值 QueryBuilder.LOG_SQL = true; QueryBuilder.LOG_VALUES = true; new AlertDialog.Builder(this).setMessage(list.get(0).getName()+","+list.get(0).getAge()).setPositiveButton("确定",null).create().show();}}
差不多最基本的增删改查操作都在这里了,更加丰富的功能慢慢研究。
0 0
- 提高android数据库性能,GreenDao初步使用
- Android 数据库 GreenDao使用
- Android GreenDao数据库框架使用
- android使用GreenDao操作数据库
- Android使用GreenDao连接数据库
- Android--------GreenDao数据库的使用
- Android数据库 GreenDao的使用
- GreenDao 初步使用
- Android 中数据库框架GreenDao与LitePal对比、集成、使用详解,greendao与原生SQLite性能对比
- Android greenDao 数据库的使用(一)
- Android greenDao 数据库的使用(二)
- Android greenDao 数据库的使用(三)
- Android Studio平台使用GreenDao操作数据库
- Android 初使用GreenDAO框架操作数据库
- android高效ORM数据库框架greenDao使用
- Android数据库操作--greenDAO的入门使用
- android 数据库greenDao的简单使用
- Android数据库之greendao的基本使用
- Android仿搜狗浏览器加载动画
- HTTP协议笔记
- nmealib代码分析
- Java学习笔记(42)----------HashTable,HashMap和HashSet
- flex HTTPService浅析
- 提高android数据库性能,GreenDao初步使用
- 电脑插入耳机无声音,显示AMD HDMI OUTPUT未插入,但是外放有声音故障解决方案
- 用户空间与内核空间数据交换的方式------seq_file
- UIImageView添加阴影和边框
- uva 10055
- hello world
- Java学习笔记(44)----------探索equals()和hashCode()方法
- linux下使用mysql数据库的总结
- 根据给定行号获取plaintextedit内容