用过ssh,s2sh的确定不会陌生 ,应该一学就会java
第一步:android
下载ormlite-android-4.41.jar和ormlite-core-4.41.jar两个jar包,放入工程的libs文件夹内,而后右键 builder path-->add pathweb
第二步:对你要持久化的类进行注解(记住.提供一个默认无参构造)数据库
@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 对应的字段名,ssh
第二步:ide
建立一个database helper类,继承OrmLiteSqliteOpenHelper 实现 onCreate 和 onUpgrade ,这个类相似于 android 的SQLiteOpenHelper方法 ,你们应该知道这个类的做用了,建立删除数据库应该使用TableUtils工具类的方法.一会下面介绍工具
第二步:分两种状况,一个直接在Activity中使用OrmLite 建立的dao类ui
(1)这时候,你的Activity类应该实现OrmLiteBaseListActivity, OrmLiteBaseService或者 OrmLiteBaseTabActivity,而后在类中使用getHelper().getDao(Class clazz);建立你的DAO 对象,而后使用其中的方法对数据进行操做.this
(2)有些人和我同样.不喜欢将DAO层和Activity层放在一块儿,喜欢讲操做数据库的类单独放在DAO包中,造成DAO层,貌似是web开发留下的..........................习惯spa
这时候,咱们须要在自定义的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 方法进行排序,分页,