ANDROID轻量级ORM框架ORMLITE学习笔记(1)-初识

何为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();
		}

大体的基本使用过程就是如此,下次会就每项进行具体的分析.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值