(4.2.9)【android开源工具】Android(安卓)ORMLite 框架的入门用法
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/39121377
大家在Android项目中或多或少的都会使用数据库,为了提高我们的开发效率,当然少不了数据库ORM框架了,尤其是某些数据库操作特别频繁的app;本篇博客将详细介绍ORMLite的简易用法。
下面开始介绍ORMLite的入门用法~
1、下载 ORMLite Jar
首先去ORMLite官网下载jar包,对于Android为:ormlite-android-4.48.jar 和 ormlite-core-4.48.jar ;
ps:访问不了的朋友,文章末尾会把jar、源码、doc与本篇博客例子一起打包提供给大家下载。
2、配置Bean类
有了jar,我们直接新建一个项目为:zhy_ormlite,然后把jar拷贝到libs下。
然后新建一个包:com.zhy.zhy_ormlite.bean专门用于存放项目中的Bean,首先新建一个User.java
[java] view plain copy
- packagecom.zhy.zhy_ormlite.bean;
- importcom.j256.ormlite.field.DatabaseField;
- importcom.j256.ormlite.table.DatabaseTable;
- @DatabaseTable(tableName="tb_user")
- publicclassUser
- {
- @DatabaseField(generatedId=true)
- privateintid;
- @DatabaseField(columnName="name")
- privateStringname;
- @DatabaseField(columnName="desc")
- privateStringdesc;
- publicUser()
- {
- }
- publicUser(Stringname,Stringdesc)
- {
- this.name=name;
- this.desc=desc;
- }
- publicintgetId()
- {
- returnid;
- }
- publicvoidsetId(intid)
- {
- this.id=id;
- }
- publicStringgetName()
- {
- returnname;
- }
- publicvoidsetName(Stringname)
- {
- this.name=name;
- }
- publicStringgetDesc()
- {
- returndesc;
- }
- publicvoidsetDesc(Stringdesc)
- {
- this.desc=desc;
- }
- }
首先在User类上添加@DatabaseTable(tableName = "tb_user"),标明这是数据库中的一张表,标明为tb_user
然后分别在属性上添加@DatabaseField(columnName = "name") ,columnName的值为该字段在数据中的列名
@DatabaseField(generatedId = true) ,generatedId 表示id为主键且自动生成
3、编写DAO类
原生的数据库操作,需要继承SQLiteOpenHelper,这里我们需要继承OrmLiteSqliteOpenHelper,看代码:
[java] view plain copy
- packagecom.zhy.zhy_ormlite.db;
- importjava.sql.SQLException;
- 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;
- importcom.zhy.zhy_ormlite.bean.User;
- publicclassDatabaseHelperextendsOrmLiteSqliteOpenHelper
- {
- privatestaticfinalStringTABLE_NAME="sqlite-test.db";
- /**
- *userDao,每张表对于一个
- */
- privateDao<User,Integer>userDao;
- privateDatabaseHelper(Contextcontext)
- {
- super(context,TABLE_NAME,null,2);
- }
- @Override
- publicvoidonCreate(SQLiteDatabasedatabase,
- ConnectionSourceconnectionSource)
- {
- try
- {
- TableUtils.createTable(connectionSource,User.class);
- }catch(SQLExceptione)
- {
- e.printStackTrace();
- }
- }
- @Override
- publicvoidonUpgrade(SQLiteDatabasedatabase,
- ConnectionSourceconnectionSource,intoldVersion,intnewVersion)
- {
- try
- {
- TableUtils.dropTable(connectionSource,User.class,true);
- onCreate(database,connectionSource);
- }catch(SQLExceptione)
- {
- e.printStackTrace();
- }
- }
- privatestaticDatabaseHelperinstance;
- /**
- *单例获取该Helper
- *
- *@paramcontext
- *@return
- */
- publicstaticsynchronizedDatabaseHelpergetHelper(Contextcontext)
- {
- if(instance==null)
- {
- synchronized(DatabaseHelper.class)
- {
- if(instance==null)
- instance=newDatabaseHelper(context);
- }
- }
- returninstance;
- }
- /**
- *获得userDao
- *
- *@return
- *@throwsSQLException
- */
- publicDao<User,Integer>getUserDao()throwsSQLException
- {
- if(userDao==null)
- {
- userDao=getDao(User.class);
- }
- returnuserDao;
- }
- /**
- *释放资源
- */
- @Override
- publicvoidclose()
- {
- super.close();
- userDao=null;
- }
- }
这里我们需要继承OrmLiteSqliteOpenHelper,其实就是间接继承了SQLiteOpenHelper
然后需要实现两个方法:
1、onCreate(SQLiteDatabase database,ConnectionSource connectionSource)
创建表,我们直接使用ormlite提供的TableUtils.createTable(connectionSource, User.class);进行创建~
2、onUpgrade(SQLiteDatabase database,ConnectionSource connectionSource, int oldVersion, int newVersion)
更新表,使用ormlite提供的TableUtils.dropTable(connectionSource, User.class, true);进行删除操作~
删除完成后,别忘了,创建操作:onCreate(database, connectionSource);
然后使用单例公布出一个创建实例的方法,getHelper用于获取我们的help实例;
最后我们可能会有很多表嘛,每个表一般我们都会单独写个Dao用于操作,这里为了简单我并没有抽取出来,直接写在helper中:
比如UserDao的获取:
[java] view plain copy
- /**
- *获得userDao
- *
- *@return
- *@throwsSQLException
- */
- publicDao<User,Integer>getUserDao()throwsSQLException
- {
- if(userDao==null)
- {
- userDao=getDao(User.class);
- }
- returnuserDao;
- }
然后通过获取到的Dao就可以进行User的一些常用的操作了。
4、测试
最后是测试,我们直接创建了一个测试类进行测试~~~
[java] view plain copy
- packagecom.zhy.zhy_ormlite.test;
- importjava.sql.SQLException;
- importjava.util.List;
- importcom.zhy.zhy_ormlite.bean.User;
- importcom.zhy.zhy_ormlite.db.DatabaseHelper;
- importandroid.test.AndroidTestCase;
- importandroid.util.Log;
- publicclassOrmLiteDbTestextendsAndroidTestCase
- {
- publicvoidtestAddUser()
- {
- Useru1=newUser("zhy","2B青年");
- DatabaseHelperhelper=DatabaseHelper.getHelper(getContext());
- try
- {
- helper.getUserDao().create(u1);
- u1=newUser("zhy2","2B青年");
- helper.getUserDao().create(u1);
- u1=newUser("zhy3","2B青年");
- helper.getUserDao().create(u1);
- u1=newUser("zhy4","2B青年");
- helper.getUserDao().create(u1);
- u1=newUser("zhy5","2B青年");
- helper.getUserDao().create(u1);
- u1=newUser("zhy6","2B青年");
- helper.getUserDao().create(u1);
- testList();
- }catch(SQLExceptione)
- {
- e.printStackTrace();
- }
- }
- publicvoidtestDeleteUser()
- {
- DatabaseHelperhelper=DatabaseHelper.getHelper(getContext());
- try
- {
- helper.getUserDao().deleteById(2);
- }catch(SQLExceptione)
- {
- e.printStackTrace();
- }
- }
- publicvoidtestUpdateUser()
- {
- DatabaseHelperhelper=DatabaseHelper.getHelper(getContext());
- try
- {
- Useru1=newUser("zhy-android","2B青年");
- u1.setId(3);
- helper.getUserDao().update(u1);
- }catch(SQLExceptione)
- {
- e.printStackTrace();
- }
- }
- publicvoidtestList()
- {
- DatabaseHelperhelper=DatabaseHelper.getHelper(getContext());
- try
- {
- Useru1=newUser("zhy-android","2B青年");
- u1.setId(2);
- List<User>users=helper.getUserDao().queryForAll();
- Log.e("TAG",users.toString());
- }catch(SQLExceptione)
- {
- e.printStackTrace();
- }
- }
- }
简单测试了下CURD,使用AndroidTestCase记得配置下环境~~~
用起来是不是还是非常方便的,不过还是建议大家例如User的数据库操作,单独抽取出来为UserDao,如下:
[java] view plain copy
- packagecom.zhy.zhy_ormlite.db;
- importjava.sql.SQLException;
- importandroid.content.Context;
- importcom.zhy.zhy_ormlite.bean.User;
- publicclassUserDao
- {
- privateContextcontext;
- publicUserDao(Contextcontext)
- {
- this.context=context;
- }
- publicvoidadd(Useruser)
- {
- try
- {
- DatabaseHelper.getHelper(context).getUserDao().create(user);
- }catch(SQLExceptione)
- {
- }
- }//......
- }
注:ORMLite还提供了一些基类ORMLiteBaseActivity,ORMLiteBaseService之类的,便于数据库操作的,这里不做考虑,毕竟项目中很大可能自己也需要继承自己的BaseActvity之类的。
上面简单介绍了如何使用ORMLite框架,Android 快速开发系列 ORMLite 框架的使用将对其用法进行深入的介绍。
源码点击下载
更多相关文章
- Android(安卓)数据存数---SQLite数据库
- Android之Service与IntentService的比较
- Android数据库使用(LitePal)
- android 手势操作 滑动效果 触摸屏事件处理
- 关于activity和task的设计思路和方法
- Android函数响应式编程最新RxJava-操作符入门(2)
- Android(安卓)如何从android手机将数据导出,查看数据库
- 项目实践之android联网操作
- android app性能优化