ORMLite的使用
2015-10-11 21:49
246 查看
首先需要下载core和android两个jar
http://ormlite.com/releases/
然后拷贝到libs文件夹下并且添加为库
具体的使用看标程:
School.java
以上通过注释符来用框架反射table和field,(generatedId=true)表示自增长
DBHelper.java
这个类继承自OrmLiteSqliteOpenHelper.class继承自SqliteOpenHelper.class,相当于是增强版的
MainActivity.java
其中一些操作:
可以看到对数据库的访问被投影成了对对象的操作,相比直接用android给的api操作数据库要短平快的多。
然后拷贝到libs文件夹下并且添加为库
具体的使用看标程:
School.java
packagecom.turtle920.ormlitedemo; importcom.j256.ormlite.field.DatabaseField; importcom.j256.ormlite.table.DatabaseTable; @DatabaseTable(tableName="school") publicclassSchool{ @DatabaseField(generatedId=true) privateintid; @DatabaseField(columnName="name") privateStringname; @DatabaseField privateStringlocation; publicintgetId(){ returnid; } publicvoidsetId(intid){ this.id=id; } publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } publicStringgetLocation(){ returnlocation; } publicvoidsetLocation(Stringlocation){ this.location=location; } }
以上通过注释符来用框架反射table和field,(generatedId=true)表示自增长
DBHelper.java
packagecom.turtle920.ormlitedemo; importandroid.content.Context; importandroid.database.sqlite.SQLiteDatabase; importcom.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper; importcom.j256.ormlite.dao.Dao; importcom.j256.ormlite.support.ConnectionSource; importcom.j256.ormlite.table.TableUtils; importjava.sql.SQLException; publicclassDBHelperextendsOrmLiteSqliteOpenHelper{ privatefinalstaticintDATABASE_VERSION=1; Dao<School,Integer>mSchoolDao; privatestaticfinalStringDB_NAME="orm"; privatestaticDBHelpermDbHelper; privateDBHelper(Contextcontext){ super(context,DB_NAME,null,DATABASE_VERSION); } publicstaticDBHelpergetInstance(Contextcontext){ if(mDbHelper==null){ mDbHelper=newDBHelper(context); } returnmDbHelper; } @Override publicvoidonCreate(SQLiteDatabasearg0,ConnectionSourcearg1){ try{ TableUtils.createTableIfNotExists(connectionSource,School.class); }catch(SQLExceptione){ e.printStackTrace(); } } @Override publicvoidonUpgrade(SQLiteDatabasearg0,ConnectionSourcearg1,intarg2, intarg3){ } publicDao<School,Integer>getSchoolDao()throwsSQLException{ if(mSchoolDao==null){ mSchoolDao=getDao(School.class); } returnmSchoolDao; } }
这个类继承自OrmLiteSqliteOpenHelper.class继承自SqliteOpenHelper.class,相当于是增强版的
MainActivity.java
packagecom.turtle920.ormlitedemo; importandroid.support.v7.app.AppCompatActivity; importandroid.os.Bundle; importandroid.util.Log; importcom.j256.ormlite.dao.Dao; importjava.sql.SQLException; importjava.util.List; publicclassMainActivityextendsAppCompatActivity{ privatestaticfinalStringTAG="DaoDaoDao"; DBHelpermDbHelper; Dao<School,Integer>mSchoolDao; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mDbHelper=DBHelper.getInstance(this); try{ mSchoolDao=mDbHelper.getSchoolDao(); }catch(SQLExceptione){ Log.e(TAG,"constructorexception",e); } testDao(); } privatevoidtestDao(){ Schoolschool1=newSchool(); school1.setName("university"); school1.setLocation("shanghai"); Schoolschool2=newSchool(); school2.setName("middleschool"); school2.setLocation("hubei"); Schoolschool3=newSchool(); school3.setName("CDQZ"); school3.setLocation("CHENGDU"); try{ mSchoolDao.create(school1); mSchoolDao.create(school2); mSchoolDao.create(school3); //获取表中所有的student。 Log.e(TAG,"************BEGIN*************"); List<School>schools=mSchoolDao.queryForAll(); Log.e(TAG,"beforedeleteschool1sizeis:"+schools.size()); for(inti=0;i<schools.size();i++){ Log.e(TAG,schools.get(i).getId()+""+schools.get(i).getName()+""+schools.get(i).getLocation()); } mSchoolDao.delete(school1); //schools=mSchoolDao.queryForAll(); schools=mSchoolDao.queryForEq("id","3"); Log.e(TAG,"afterdeleteschool1listsizeis:"+schools.size()); for(inti=0;i<schools.size();i++){ Log.e(TAG,schools.get(i).getId()+""+schools.get(i).getName()+""+schools.get(i).getLocation()); } }catch(SQLExceptione){ e.printStackTrace(); } } }
其中一些操作:
.queryForEq("id","3");//查询“id”=“3”的 .queryForAll();//所有 .delete(school1);//删除 .deleteById(intid);//按id删 .update(school);//更新 .create(school);//插入
可以看到对数据库的访问被投影成了对对象的操作,相比直接用android给的api操作数据库要短平快的多。
相关文章推荐
- Cutting Sticks
- mybatis0201 01复习
- ucos关于互斥信号量
- hdu 5481 Desiderium(高效)
- 截取web页面访问时间(Apache)
- IOS 录音与播放
- manacher算法实现
- linux下的软件管理(yum仓库)
- STM32输出2路PWM-------------------------------major
- C/C++基础总结(一)
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-02-Example
- 面试,一点小心得
- CodeForces 128D Numbers [想法题/贪心]
- AngularJS学习总结
- php的几种标记
- 最长上升子序列 O(nlogn)解法 (转)
- 15、Hibernate的原生sql查询,优化Hibernate的查询效率
- 产品UI设计排版的四个基本原则
- js typeof instanceof
- XAMMP Port 443 in use by