studio数据缓存Android知识

OrmLite框架 —— OrmLite 入门使用(一)

2016-10-31  本文已影响1380人  mm_cuckoo

OrmLite 三篇文章

  1. OrmLite框架 —— OrmLite 入门使用(一)
  2. OrmLite框架 —— OrmLite 复杂条件查询(二)
  3. OrmLite框架 —— OrmLite 框架封装及使用(三)

简介

本片文章主要是针对 Android 使用 OrmLite 框架对数据库的基本操介绍,如有那些地方介绍的不对,请指出来,一起学习,一起进步。

添加 OrmLite 包

向工程中添加 OrmLite jar 包有两种方式:

  1. 到 OrmLite 官网下载 ormlite-core-4.49.jar 和 ormlite-android-4.49.jar 两个jar 包添加到工程中。
  2. 在项目中添加依赖的方式。

创建项目中使用DatabaseHelper类

首先要简单说一下 OrmLite 框架中 OrmLiteSqliteOpenHelper 类 ,OrmLiteSqliteOpenHelper 类继承了 SQLiteOpenHelper。所以,创建项目中的DatabaseHelper 类,要使该类继承 OrmLite 框架 OrmLiteSqliteOpenHelper 类来获得 SQLiteHelper.

继承 OrmLiteSqliteOpenHelper 实现几个方法说明

构造函数
public DatabaseHelper(Context context, String databaseName, SQLiteDatabase.CursorFactory factory, int databaseVersion) {
        super(context, databaseName, factory, databaseVersion);
        /**
         * 参数说明:
         * context:上下文。
         * databaseName: 数据库名。
         * factory: 游标实例,多数时候设置成NULL。
         * databaseVersion:数据库版本,当数据库版本升高时,会调用onUpgrade()方法。
         */
        
}
创建数据库表
public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) { 
        /**
         * 在该方法中进行创建表操作
         * 使用OrmLite 框架的 TableUtils.createTable进行创建表操作。
         *eg.
         */
         
        try {
            TableUtils.createTable(connectionSource, UserInfo.class);
        } catch (SQLException e) {
            e.printStackTrace();
        }
 
}
数据库版本提升更新方法
public void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource, int i, int i1) { 
    //在该方法中进行更新操作

}

创建数据库表对应的 Bean

Bean 类中的变量对应数据库中的字段,在 Bean 中使用注解方式进行设置。
实例代码如下:

@DatabaseTable(tableName = "tb_user_info")
public class UserInfo {

    @DatabaseField(generatedId = true)
    private int userId;
    @DatabaseField(columnName = "name")
    private String name;
    @DatabaseField(columnName = "addr")
    private String addr;
    @DatabaseField(columnName = "sex")
    private String sex;

    // 对应字段的set 和 get 方法

}

数据库中字段注解设置说明:

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

获取操作数据库对应表的 Bean 的 Dao

在OrmLite 框架中。操作数据是通过 对应Bean的Dao 实现的。
那么Dao 是如何获取的呢?
Dao 的获取方式:
对应Bean是通过 OrmLiteSqliteOpenHelper 类中 getDao(Class<T> clazz) 方法获取。

实例代码如下:

public class UserDao {

    private DatabaseHelper helper;

    public Dao<UserInfo,Integer> getUserDao(Context context) throws SQLException {
        helper = new DatabaseHelper(context);
        return helper.getDao(UserInfo.class);
    }
}

通过 Dao 对数据库进行简单增、删、改、查操作

UserDao mDao = new UserDao();

增:

try {
        UserInfo u1 = new UserInfo("zhangsan","beijng","nan");
        mDao.getUserDao(mContext).create(u1);
} catch (SQLException e) {
         e.printStackTrace();
}

删:

下面的示例是使用删除集合完成删除

//修改和删除要通过id 进行操作
UserInfo u4 = new UserInfo("zhangsan","北京","女");
u4.setUserId(4);

UserInfo u3 = new UserInfo("招商","beijng","女");
u3.setUserId(3);
try {
    Collection<UserInfo> collection = new ArrayList<UserInfo>();
    collection.add(u4);
    collection.add(u3);
    mDao.getUserDao(mContext).delete(collection);
} catch (SQLException e) {
    e.printStackTrace();
}

改:

UserInfo u4 = new UserInfo("updateMan","北京","女");
u4.setUserId(4);

try {
    mDao.getUserDao(mContext).update(u4);
} catch (SQLException e) {
     e.printStackTrace();
}

查:

注:这里只举了一个查询方式,查询全部。条件查询请参考(OrmLite 复杂条件查询)

try {
List<UserInfo> infos =  mDao.getUserDao(mContext).queryForAll();
    for(UserInfo info : infos){
        //在此处使用TextView进行显示
        mUserText.append("\n" + info.toString() + "\n");
    }
} catch (SQLException e) {
    e.printStackTrace();
}
上一篇下一篇

猜你喜欢

热点阅读