何为Orm?
Object Relational Mapping,即对象关系映射.
作用就在于把业务逻辑与关系数据库相关联.对于初学者的我们来说,其实就是摆脱了访问数据库操作的细节,不用再去写复杂的SQL语句.
今天的主角:
Ormlite[Object Relational Mapping Lite (ORM Lite)]
对象关系映射精简版(精简版的ORM)提供了一些简单的,轻量级持久化Java对象到SQL数据库,同时也避免了复杂性和更多的标准的ORM包的开销的功能。
支持数据库的jdbc调用,当然,最重要的肯定是它支持android原生的数据库api调用sqlite。
下载传送门:http://ormlite.com/releases/
目前最新的版本为4.31,下载对应的核心包core及android支持库.然后在对应要使用的项目中加入刚下载的两个jar包.
接下来,作为基本的使用方法,需要建立下列文件(正常的使用,非最简化):
(一)需要存储的数据对象实体。例如:***Bean.java等
(二)需要数据DataHelper类,来创建及管理数据库。例如:DataHelper.java等
(三)需要相应的数据Dao类,所谓的数据访问接口。***Dao.java等
具体的如下:
数据实体SimpleData:
public class SimpleData { @DatabaseField(generatedId = true)//自增长的主键 int id; @DatabaseField//声明string为数据库字段 String string; } SimpleData() { //ormlite中必须要有一个无参的构造函数 } public SimpleData(String tString) { this.string = tString; }
DataHelper类:
public class DataHelper extends OrmLiteSqliteOpenHelper{ private static final String DATABASE_NAME = "OrmliteDemo.db"; private static final int DATABASE_VERSION = 1; private Dao<SimpleData, Integer> simpledataDao = null; public DataHelper(Context context){ super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase arg0, ConnectionSource connectionSource) { // TODO Auto-generated method stub try { Log.e(DataHelper.class.getName(), "开始创建数据库"); TableUtils.createTable(connectionSource, SimpleData.class); Log.e(DataHelper.class.getName(), "创建数据库成功"); } catch (SQLException e) { // TODO Auto-generated catch block Log.e(DataHelper.class.getName(), "创建数据库失败", e); e.printStackTrace(); } } @Override public void onUpgrade(SQLiteDatabase db, ConnectionSource connectionSource, int arg2, int arg3) { // TODO Auto-generated method stub try { TableUtils.dropTable(connectionSource, SimpleData.class, true); onCreate(db, connectionSource); Log.e(DataHelper.class.getName(), "更新数据库成功"); } catch (SQLException e) { Log.e(DataHelper.class.getName(), "更新数据库失败", e); e.printStackTrace(); } } @Override public void close() { // TODO Auto-generated method stub super.close(); } public Dao<SimpleData, Integer> getSimpleDataDao() throws SQLException{ if(simpledataDao == null){ simpledataDao = getDao(SimpleData.class); } return simpledataDao; } }
相应的数据Dao类:
public class SimpleDataDao { public List<SimpleData> findSimpleData(Dao<SimpleData, Integer> simpledatadao, int id) throws SQLException{ Dao<SimpleData, Integer> simpledataDao = simpledatadao; HashMap<String , Object> simpledataMap = new HashMap<String, Object>(); userguideMap.put("id", id); List<SimpleData> simpledataLists = simpledataDao.queryForFieldValues(simpledataMap); return simpledataLists == null ? null :simpledataLists; } public void addSimpleData(Dao<SimpleData,Integer> simpledatadao,String string ) throws SQLException{ Dao<SimpleData, Integer> simpledataDao = simpledatadao; SimpleData simpleData = new SimpleData(string); simpledataDao.create(simpleData); } }
接下来,就是如何具体使用调用了。
对于ormlite有两种使用方法,一种是继承对应的OrmLiteBaseActivity。
但有的时候Activity本身必须继承其他而无法继承OrmLiteBaseActivity的时候,就必须使用另外一种方法:
private DataHelper dataHelper = null; private DataHelper getHelper() { if (dataHelper == null) { dataHelper = OpenHelperManager.getHelper(this, DataHelper.class); } return dataHelper; } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); if (dataHelper != null) { OpenHelperManager.releaseHelper(); dataHelper = null; } }
在activity中添加一个获取helper的方法,还有在onDestroy中添加及时关闭helper的方法。
之后
SimpleDataDao simpledataDao = new SimpleDataDao(); try { Dao<SimpleData, Integer> simpledatadao = getHelper().getSimpleDataDataDao(); //查找操作调用 List<SimpleData> simpledataList = simpledataDao.findSimpleData(simpledatadao, 1); //添加操作调用 simpledataDao.addSimpleData(simpledatadao,"demotest"); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }
大体的基本使用过程就是如此,下次会就每项进行具体的分析.