Android ORMLite 框架的入门用法
大家在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
- package com.zhy.zhy_ormlite.bean;
- import com.j256.ormlite.field.DatabaseField;
- import com.j256.ormlite.table.DatabaseTable;
- @DatabaseTable(tableName = "tb_user")
- public class User
- {
- @DatabaseField(generatedId = true)
- private int id;
- @DatabaseField(columnName = "name")
- private String name;
- @DatabaseField(columnName = "desc")
- private String desc;
- public User()
- {
- }
- public User(String name, String desc)
- {
- this.name = name;
- this.desc = desc;
- }
- public int getId()
- {
- return id;
- }
- public void setId(int id)
- {
- this.id = id;
- }
- public String getName()
- {
- return name;
- }
- public void setName(String name)
- {
- this.name = name;
- }
- public String getDesc()
- {
- return desc;
- }
- public void setDesc(String desc)
- {
- this.desc = desc;
- }
- }
首先在User类上添加@DatabaseTable(tableName = "tb_user"),标明这是数据库中的一张表,标明为tb_user
然后分别在属性上添加@DatabaseField(columnName = "name") ,columnName的值为该字段在数据中的列名
@DatabaseField(generatedId = true) ,generatedId 表示id为主键且自动生成
3、编写DAO类
原生的数据库操作,需要继承SQLiteOpenHelper,这里我们需要继承OrmLiteSqliteOpenHelper,看代码:
- package com.zhy.zhy_ormlite.db;
- import java.sql.SQLException;
- import android.content.Context;
- import android.database.sqlite.SQLiteDatabase;
- import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
- import com.j256.ormlite.dao.Dao;
- import com.j256.ormlite.support.ConnectionSource;
- import com.j256.ormlite.table.TableUtils;
- import com.zhy.zhy_ormlite.bean.User;
- public class DatabaseHelper extends OrmLiteSqliteOpenHelper
- {
- private static final String TABLE_NAME = "sqlite-test.db";
- /**
- * userDao ,每张表对于一个
- */
- private Dao<User, Integer> userDao;
- private DatabaseHelper(Context context)
- {
- super(context, TABLE_NAME, null, 2);
- }
- @Override
- public void onCreate(SQLiteDatabase database,
- ConnectionSource connectionSource)
- {
- try
- {
- TableUtils.createTable(connectionSource, User.class);
- } catch (SQLException e)
- {
- e.printStackTrace();
- }
- }
- @Override
- public void onUpgrade(SQLiteDatabase database,
- ConnectionSource connectionSource, int oldVersion, int newVersion)
- {
- try
- {
- TableUtils.dropTable(connectionSource, User.class, true);
- onCreate(database, connectionSource);
- } catch (SQLException e)
- {
- e.printStackTrace();
- }
- }
- private static DatabaseHelper instance;
- /**
- * 单例获取该Helper
- *
- * @param context
- * @return
- */
- public static synchronized DatabaseHelper getHelper(Context context)
- {
- if (instance == null)
- {
- synchronized (DatabaseHelper.class)
- {
- if (instance == null)
- instance = new DatabaseHelper(context);
- }
- }
- return instance;
- }
- /**
- * 获得userDao
- *
- * @return
- * @throws SQLException
- */
- public Dao<User, Integer> getUserDao() throws SQLException
- {
- if (userDao == null)
- {
- userDao = getDao(User.class);
- }
- return userDao;
- }
- /**
- * 释放资源
- */
- @Override
- public void close()
- {
- 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的获取:
- /**
- * 获得userDao
- *
- * @return
- * @throws SQLException
- */
- public Dao<User, Integer> getUserDao() throws SQLException
- {
- if (userDao == null)
- {
- userDao = getDao(User.class);
- }
- return userDao;
- }
然后通过获取到的Dao就可以进行User的一些常用的操作了。
4、测试
最后是测试,我们直接创建了一个测试类进行测试~~~
- package com.zhy.zhy_ormlite.test;
- import java.sql.SQLException;
- import java.util.List;
- import com.zhy.zhy_ormlite.bean.User;
- import com.zhy.zhy_ormlite.db.DatabaseHelper;
- import android.test.AndroidTestCase;
- import android.util.Log;
- public class OrmLiteDbTest extends AndroidTestCase
- {
- public void testAddUser()
- {
- User u1 = new User("zhy", "2B青年");
- DatabaseHelper helper = DatabaseHelper.getHelper(getContext());
- try
- {
- helper.getUserDao().create(u1);
- u1 = new User("zhy2", "2B青年");
- helper.getUserDao().create(u1);
- u1 = new User("zhy3", "2B青年");
- helper.getUserDao().create(u1);
- u1 = new User("zhy4", "2B青年");
- helper.getUserDao().create(u1);
- u1 = new User("zhy5", "2B青年");
- helper.getUserDao().create(u1);
- u1 = new User("zhy6", "2B青年");
- helper.getUserDao().create(u1);
- testList();
- } catch (SQLException e)
- {
- e.printStackTrace();
- }
- }
- public void testDeleteUser()
- {
- DatabaseHelper helper = DatabaseHelper.getHelper(getContext());
- try
- {
- helper.getUserDao().deleteById(2);
- } catch (SQLException e)
- {
- e.printStackTrace();
- }
- }
- public void testUpdateUser()
- {
- DatabaseHelper helper = DatabaseHelper.getHelper(getContext());
- try
- {
- User u1 = new User("zhy-android", "2B青年");
- u1.setId(3);
- helper.getUserDao().update(u1);
- } catch (SQLException e)
- {
- e.printStackTrace();
- }
- }
- public void testList()
- {
- DatabaseHelper helper = DatabaseHelper.getHelper(getContext());
- try
- {
- User u1 = new User("zhy-android", "2B青年");
- u1.setId(2);
- List<User> users = helper.getUserDao().queryForAll();
- Log.e("TAG", users.toString());
- } catch (SQLException e)
- {
- e.printStackTrace();
- }
- }
- }
简单测试了下CURD,使用AndroidTestCase记得配置下环境~~~
用起来是不是还是非常方便的,不过还是建议大家例如User的数据库操作,单独抽取出来为UserDao,如下:
- package com.zhy.zhy_ormlite.db;
- import java.sql.SQLException;
- import android.content.Context;
- import com.zhy.zhy_ormlite.bean.User;
- public class UserDao
- {
- private Context context;
- public UserDao(Context context)
- {
- this.context = context;
- }
- public void add(User user)
- {
- try
- {
- DatabaseHelper.getHelper(context).getUserDao().create(user);
- } catch (SQLException e)
- {
- }
- }//......
- }
注:ORMLite还提供了一些基类ORMLiteBaseActivity,ORMLiteBaseService之类的,便于数据库操作的,这里不做考虑,毕竟项目中很大可能自己也需要继承自己的BaseActvity之类的。
上面简单介绍了如何使用ORMLite框架,Android 快速开发系列 ORMLite 框架的使用 将对其用法进行深入的介绍。
Android ORMLite 框架的入门用法的更多相关文章
- Android—Ormlite框架简单的操作数据库
大家在Android项目中或多或少的都会使用数据库,为了提高我们的开发效率,当然少不了数据库ORM框架了,尤其是某些数据库操作特别频繁的app:本篇博客将详细介绍ORMLite的简易用法. 下面开始介 ...
- Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包
Android数据库框架--ORMLite轻量级的对象关系映射(ORM)Java包 事实上,我想写数据库的念头已经很久了,在之前写了一个答题系统的小项目那只是初步的带了一下数据库,数据库是比较强大的, ...
- Android数据库框架-ORMLite
参考资料 Android ORMLite 框架的入门用法 Android 快速开发系列 ORMLite 框架最佳实践 添加依赖 compile 'com.j256.ormlite:ormlite-an ...
- Android数据库框架-----ORMLite 的基本用法
ORMLite 是一款非要流行的Android平台上的数据库框架,性能优秀,代码简洁: 简述: 优点: 1.轻量级:2.使用简单,易上手:3.封装完善:4.文档全面. 缺点:1.基于反射,效率较低(本 ...
- Android 数据库框架OrmLite的使用(一)
在这里记录下最基本的用法,官网上可了解相关的介绍. 1.下载OrmLite jar 在下载android的:ormlite-android-4.48.jar和ormlite-core-4.48.jar ...
- Android数据库框架-----ORMLite关联表的使用
上一篇已经对ORMLite框架做了简单的介绍:Android数据库框架-----ORMLite 的基本用法~~本篇将介绍项目可能会使用到的一些用法,也为我们的使用ORMLite框架总结出一个较合理的用 ...
- android ORM框架ORMLite封装
源码:http://download.csdn.net/detail/a924571572/9415506 一.框架效率对比 由于目前公司里面android端数据的数据量基本在千条以内,所以选择了更为 ...
- android数据库持久化框架, ormlite框架,
前言 Android中内置了SQLite,但是对于数据库操作这块,非常的麻烦.其实可以试用第3方的数据库持久化框架对之进行结构上调整, 摆脱了访问数据库操作的细节,不用再去写复杂的SQL语句.虽然这样 ...
- Android 数据库框架ormlite
Android 数据库框架ormlite 使用精要 前言 本篇博客记录一下笔者在实际开发中使用到的一个数据库框架,这个可以让我们快速实现数据库操作,避免频繁手写sql,提高我们的开发效率,减少出错的机 ...
随机推荐
- 第一篇:CUDA 6.0 安装及配置( WIN7 64位 / 英伟达G卡 / VS2010 )
前言 本文讲解如何在VS 2010开发平台中搭建CUDA开发环境. 当前配置: 系统:WIN7 64位 开发平台:VS 2010 显卡:英伟达G卡 CUDA版本:6.0 若配置不同,请谨慎参考本文. ...
- mysql表名忽略大小写
安装完数据库,建表查询发现表不存在,原来是表名大小写写错了,原来Linux下的MySQL默认是区分表名大小写的,这样的话对变成灰带来很大的不变,如何才能使mysql表名不区分大小写呢? 通过如下设置, ...
- CodeForces 327C
Magic Five Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Submit ...
- region URL请求数据
#region URL请求数据 /// <summary> /// HTTP POST方式请求数据 /// </summary> /// <param name=&quo ...
- js中的innerHTML和outerHTML区别
一.区别:1)innerHTML: 从对象的起始位置到终止位置的全部内容,不包括Html标签.2)outerHTML: 除了包含innerHTML的全部内容外, 还包含对象标签本身. 二.例子: &l ...
- R语言爬虫 rvest包 html_text()-html_nodes() 原理说明
library(rvest) 例子网页:http://search.51job.com/jobsearch/search_result.php?fromJs=1&jobarea=010000% ...
- 可能是一份没什么用的爬虫代理IP指南
写在前面 做爬虫的小伙伴一般都绕不过代理IP这个问题. PS:如果还没遇到被封IP的场景,要不就是你量太小人家懒得理你,要不就是人家压根不在乎... 爬虫用户自己是没有能力维护一系列的代理服务器和代理 ...
- Hangfire 使用笔记
“巨人们”的地址 Hangfire Mysql: https://github.com/arnoldasgudas/Hangfire.MySqlStorage 在获取set表数据的sql语句有bug ...
- 【UWP】列表项宽度自适应的实现
目的 在UWP开发中,我们常常用到两个显示列表的控件:ListView和GridView.而这两个列表控件在PC等大屏幕上如果能多列"智能"调整自己的大小(通常是根据当前窗口大小调 ...
- android学习5——画图问题
重写View中的onDraw函数可以实现画图.代码如下: @Override public void onDraw(Canvas canvas) { Paint paint = new Paint() ...