文档章节

Android 使用ORMLite 操作数据库

joker_zhou
 joker_zhou
发布于 2014/07/17 16:03
字数 1246
阅读 87
收藏 0

用过ssh,s2sh的肯定不会陌生 ,应该一学就会

第一步:

          下载ormlite-android-4.41.jar和ormlite-core-4.41.jar两个jar包,放入工程的libs文件夹内,然后右键 builder path-->add path

第二步:对你要持久化的类进行注解(记住.提供一个默认无参构造)

@DatabaseTable(tableName="student")  tableName 表明
public class Student {
	public static final String ID="student_id";
	public static final String NAME="student_name";
	public static final String LASTNAME="student_lastname";
	public static final String RESOURCE="student_resource";	
	public static final String TEACHER_ID="tacher_id";
	@DatabaseField(generatedId=true,useGetSet=true,columnName=ID)	
	private int id;
	@DatabaseField(foreignColumnName=Teacher.ID,foreign=true,foreignAutoCreate=true)
	private Teacher teacher_id;
	@DatabaseField(useGetSet=true,columnName=NAME)	
	private String name;
	@DatabaseField(useGetSet=true,columnName=LASTNAME)
	private String lastName;
	@DatabaseField(useGetSet=true,columnName=RESOURCE)
	private double	resource;
 一系列的set get 方法...

过一会将详细的列出各种注解的意思,这里只需要知道 @DatabaseTable 指定类对应的表明,@DatabaseField 对应的字段名,

第二步:

         创建一个database helper类,继承OrmLiteSqliteOpenHelper 实现 onCreate 和 onUpgrade ,这个类类似于 android 的SQLiteOpenHelper方法 ,大家应该知道这个类的作用了,创建删除数据库应该使用TableUtils工具类的方法.一会下面介绍

第二步:分两种情况,一个直接在Activity中使用OrmLite 创建的dao类

             (1)这时候,你的Activity类应该实现OrmLiteBaseListActivity, OrmLiteBaseService或者 OrmLiteBaseTabActivity,然后在类中使用getHelper().getDao(Class clazz);创建你的DAO 对象,然后使用其中的方法对数据进行操作.

             (2)有些人和我一样.不喜欢将DAO层和Activity层放在一起,喜欢讲操作数据库的类单独放在DAO包中,形成DAO层,貌似是web开发留下的..........................习惯

                            这时候,我们需要在自定义的DAO中使用 OrmLiteSqliteOpenHelper helper=OpenHelperManager.getHelper(context,BasicDAO.class);方法来得到helper对象,这个对象需要保持,根据文档上说在销毁对象的时候需要OpenHelperM                                   anager.releaseHelper();使用这个方法来释放掉helper对象,然后使用helper对象的getDao(Student.class);方法得到DAO类,

                            然后我们就可以使用DAO类,完成各种各样的数据库 增删改操作.

                            例如:

public class StudentDAO{
	Dao
 
   dao=null;
	private Context context=null;
	OrmLiteSqliteOpenHelper helper=null;
        public StudentDAO(Context context) {
		this.context=context;
		// TODO Auto-generated constructor stub
		helper=OpenHelperManager.getHelper(context,BasicDAO.class);
		try {
			dao=helper.getDao(Student.class);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
        @Override

   protected void finalize() throws Throwable {

   // TODO Auto-generated method stub

   OpenHelperManager.release();//释放掉helper

   super.finalize();

   }
}

接下来介绍..各种各样的注解

首先介绍 @DatabaseTable

                                参数:tableName指定表明,没有将使用类名作为表明

                 @DatabaseField

cloumnName:指定字段名,不指定则变量名作为字段名  canBeNull:是否可以为null  
dataType:指定字段的类型 defaultValue:指定默认值  width:指定长度
 id:指定字段为id generatedId:指定字段为自增长的id,不能id,generatedIdSequence通用 foreign 指定这个字段的对象是一个外键,外键值是这个对象的id
useGetSet:指定ormlite访问变量使用set,get方法默认使用的是反射机制直接访问变量 throwIfNull,如果空值抛出异常 persisted:指定是否持久化此变量,默认true
unique:字段值唯一 uniqueCombo整列的值唯一 index:索引
uniqueIndex 唯一索引 foreignAutoRefresh 外键值,自动刷新 foreignAutoCreate 外键不存在时是否自动添加到外间表中
foreignColumnName外键字段指定的外键表中的哪个字段    

                 @ForeignCollectionField  表示这个表中的数据在其他表中是外键(其他表的某个字段使用@DatabaseField(foreignColumnName=一个表的id键名,foreign=true)

                                          eager 表示该集合是在初始化这个对象的时候,是否讲对象取出还是在遍历的时候才取出,默认false遍历的时候才取出,size()方法也会引起遍历

                                          这个注解注解的字段只能是ForeignCollection<T> or Collection<T> 对象

TableUtils

接下来介绍TableUtils完成对数据中的表进行创建,删除,清空表格,只要看一下它的静态方法.做过程序的应该都会


Dao<T,V>

包含两个泛型,第一个泛型表DAO操作的类,第二个表示操作类的主键类型

主要方法:

             create:插入一条数据

             createIfNotExists:如果不存在则插入

             createOrUpdate:如果指定id则更新

             queryForId:更具id查找

             update 查找出数据

             refresh的解释:If you want to use other elds in the Account, you must call refresh on the accountDao class to get the Account object lled in.

             delte 删除数据

             queryBuilder() 创建一个查询生成器:进行复杂查询

            deleteBuilder() 创建一个删除生成器,进程复杂条件删除

            updateBuilder() 创建修条件生成器,进行复杂条件修改

条件查找器DeleteBuilder,QueryBuilder,UpdateBuilder

            查找器是帮助拼接条件语句的.比如查找器中有 where()方法 and()方法 eq()方法 lt()方法 qt()方法 between方法这些方法很直观..很容易都明了什么意思

            最后使用prepare()方法生成条件使用DAO.query || DAO.delete|| DAO.update 方法执行

           可以使用查找生成器QueryBuilder 的 orderby limit offset 方法进行排序,分页, 

                                                                                                                 

                                

                              

                              


本文转载自:http://blog.csdn.net/joker_zhou/article/details/7869244

joker_zhou
粉丝 2
博文 100
码字总数 4167
作品 0
青岛
私信 提问
Android ORMLite 框架的入门用法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lmj623565791/article/details/39121377 转载请标明出处:http://blog.csdn.net/lmj623565791/article/detai...

鸿洋_
2014/09/07
0
0
Ormlite在一般java环境中操作Sqlite

简介 最开始接触ormlite是在android的开发中,ormlite的简单便利让我印象深刻。 这几天在研究顾客购物行为,需要使用到数据库,但是对于数据库的速度什么的要求不大,我首先想到的是Ormlite...

长平狐
2013/11/25
2.4K
0
ORMLite 实现数据库操作

车主个人信息和汽车信息除了保存在服务器数据库中同时保存在本地SQLite中, 本项目中db包下使用了ORMLite 实现数据库操作。 Android ORMLite 框架的入门用法 http://blog.csdn.net/lmj623565...

webjie
2016/06/03
4
0
Android SQLite相关框架工具

我是一个Android新手,以前做的Web应用,公司需要,我转了Android,最近发现SQLite数据库代码开发工作量很大,颠来倒去就是创建表、删除表、查询、更新等操作,所以想找个工具(像Hibernate...

你我的宿命
2013/03/31
3.7K
0
如何在Eclipse中查看Android源码或者第三方组件包源码

在学习过程中如果经常阅读源码,理解程度会比较深,学习效率也会比较高,那么如何方便快捷的阅读Android源码? 如何查看Android源码[以Android2.2为例] 我们知道在Eclipse里按住Ctrl键不松手...

鉴客
2011/11/14
13.9K
3

没有更多内容

加载失败,请刷新页面

加载更多

OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
今天
5
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
今天
6
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
今天
4
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
今天
7
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部