Android ORMLite的使用

概况:ORMLite是一个第三方的组件包,相当于我们Web的hibernate框架,它封装好了一系列的方法方便更好的调用

首先先下载ORMLite是需要的包(ORMLite官网下载链接:http://ormlite.com/)
本人使用的是(ORMLite5.0的,有需要的朋友ORMLite5.0.rar单击名称即可下载)
下载完成后,将两个包拷贝到项目libs目录下即可以使用

一.ORMLite实体类注解的使用http://files.cnblogs.com/files/zhaoyucong/ORMLite5.0.rar

package com.example.entity;

import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;

@DatabaseTable(tableName="t_message")
public class Message {
    
    @DatabaseField(generatedId=true)
    private int id;
    
    @DatabaseField(columnName="userName")
    private String userName;
    
    @DatabaseField(columnName="lastMessage")
    private String lastMessage;
    
    @DatabaseField(columnName="datetime")
    private String datetime;
    
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getLastMessage() {
        return lastMessage;
    }
    public void setLastMessage(String lastMessage) {
        this.lastMessage = lastMessage;
    }
    public String getDatetime() {
        return datetime;
    }
    public void setDatetime(String datetime) {
        this.datetime = datetime;
    }
}

@DatabaseTable 参数:tableName指定表明,没有将使用类名作为表明
@ForeignCollectionField 表示这个表中的数据在其他表中是外键(其他表的某个字段使用@DatabaseField(foreignColumnName=一个表的id键名,foreign=true)
@DatabaseField

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

二.OrmLiteSqliteOpenHelper类
OrmLiteSqliteOpenHelper类是一个抽象的类要实现onCreate()和onUpgrade()两个方法,这个类类似于android的SQLiteOpenHelper方法,大家应该知道这个类的作用了(ps:不清楚的可以去看看本人前一章博客链接:http://www.cnblogs.com/zhaoyucong/p/6113911.html),唯一不相同的是SQLiteOpenHelper里的onCreate()和onUpgrade()是一个回调函数,是不需要自己手动调用,系统会自动调用,却OrmLiteSqliteOpenHelper里的恰好相反,我们可以通过getDao(实体类名称.class)方法获取到一个Dao的对象,然后我们就可以使用Dao类,完成各种各样的数据库增删改操作,Dao<T,V>包含两个泛型,第一个泛型表Dao操作的类,第二个表示操作类的主键类型
常见的方法:
create:插入一条数据
createIfNotExists:如果不存在则插入
createOrUpdate:如果指定id则更新
queryForId:更具id查找
update 查找出数据
delte 删除数据
queryBuilder()创建一个查询生成器:进行复杂查询
deleteBuilder()创建一个删除生成器,进程复杂条件删除
updateBuilder()创建修条件生成器,进行复杂条件修改
使用prepare()方法生成条件使用Dao.query、Dao.delete、Dao.update方法执行

package com.example.winxin2;

import java.sql.SQLException;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;

import com.example.entity.Message;
import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.support.ConnectionSource;

public class DatabaseHelper extends OrmLiteSqliteOpenHelper {

    private static final String DB_NAME = "mydata.db"; // 数据库名称
    private static final int version = 1; // 数据库版本
    //定义每一张表的成员变量,其中一个功能:关闭helper,所有DAO对象清理
    private Dao<Message, Integer> messageDao;
    
    public Dao<Message, Integer> getMessageDao() {
        if (messageDao==null){
            try {
                messageDao = getDao(Message.class);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return messageDao;
    }

    public DatabaseHelper(Context context) {
        super(context, DB_NAME, null, version);
    }

    /*
     * 1.此方法,不会自定执行,因为它不是回调函数
     * 2.最好也不要自己调用,因为只应该执行1次
     */
    @Override
    public void onCreate(SQLiteDatabase arg0, ConnectionSource arg1) {
        // TODO Auto-generated method stub
        
    }

    /*
     * 此方法,不会自定执行,因为它不是回调函数
     */
    @Override
    public void onUpgrade(SQLiteDatabase arg0, ConnectionSource arg1, int arg2,
            int arg3) {
        // TODO Auto-generated method stub
        
    }
    
    @Override
    public void close() {
        super.close();
        if (messageDao!=null){
            messageDao = null;
        }
    }

}

以上就是我对ORMLite的理解

原文地址:https://www.cnblogs.com/zhaoyucong/p/6122064.html