您的位置:首页 > 其它

ORMLite的使用

2015-10-11 21:49 246 查看
首先需要下载core和android两个jar
http://ormlite.com/releases/
然后拷贝到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操作数据库要短平快的多。


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: