ORMLite使用入门

1.dependencies中添加依赖

compile group: 'com.j256.ormlite', name: 'ormlite-core', version: '5.1'
compile group: 'com.j256.ormlite', name: 'ormlite-android', version: '5.1'

2.创建ORMLiteHelper类,继承OrmLiteSqliteOpenHelper

public class ORMLiteHelper extends OrmLiteSqliteOpenHelper {
/**
 * 数据库名称
 */
private static final String DBNAME = "ormLiteDBName";
/**
 * 版本号
 */
private static final int DBVERSION = 1;
private static ORMLiteHelper mInstance;
private static Context mContext;

private ORMLiteHelper(Context context) {
    super(context, DBNAME, null, DBVERSION);
}

/**
 * 初始化
 *
 * @param context
 */
public static void initOrmLite(Context context) {
    mContext = context;
    getIntence();
}

/**
 * 获取实例
 *
 * @return
 */
public static ORMLiteHelper getIntence() {
    if (null == mInstance) {
        synchronized (ORMLiteHelper.class) {
            if (null == mInstance) {
                mInstance = new ORMLiteHelper(mContext);
            }
        }
    }
    return mInstance;
}


@Override
public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) {
    try {
        /**
         * 创建表
         */
        int tableIfNotExists = TableUtils.createTableIfNotExists(connectionSource, OrmTable.class);
        Log.e("nan", "测试创建====" + tableIfNotExists);
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource, int i, int i1) {

    /**
     * 方式一
     * 删除表,重新创建
     * 弊端:表中原有数据丢失
     */
    try {
        TableUtils.dropTable(connectionSource, OrmTable.class, false);
        onCreate(sqLiteDatabase, connectionSource);
    } catch (SQLException e) {
        e.printStackTrace();
    }
    /**
     * 方式二
     * 动态增删表字段
     * 优点:保留原有数据
     */
    //TableUpdataOperate.getInstance().updateColumn(sqLiteDatabase, "已有表名"
    //                , "新增的表字段", "varchar", "默认值");
    TableUpdataOperate.getInstance().updateColumn(sqLiteDatabase, "tTable"
            , "newColumnName", "varchar", "newColumnvalue");
}

/**
 * 获取数据对象
 *
 * @param classz 对应的表实体的字节码对象
 * @return Dao<T, ID> :T:表实体对象类型.ID:对应的表实体中被指定为id字段的属性类型
 * @throws SQLException
 */
public Dao getDao(Class classz) throws SQLException {
    return super.getDao(classz);
}}

3.创建与数据表具有映射关系的数据实体类OrmTable

@DatabaseTable(tableName = "tTable")
public class OrmTable {
/**
 * columnName:列名
 * id:指定该列为id列
 * <p>
 * 该属性被指定为id列后,其数据类型将与Dao<T,ID>中的泛型ID的类型一致
 */
@DatabaseField(columnName = "_id", id = true)
public String _id;

@DatabaseField(columnName = "name")
public String name;

@DatabaseField(columnName = "sex")
public int sex;}

4.创建针对tTable表进行操作的类

public class OrmTableDao {
/**
 * 根据数据表实体查询到的Dao
 * 第一个泛型为数据表实体
 * 第二个泛型为数据表实体中被指定为id的属性的数据类型
 */
private Dao<OrmTable, String> mDao;
private static OrmTableDao mInstance;

private OrmTableDao() {
    try {
        mDao = ORMLiteHelper.getIntence().getDao(OrmTable.class);
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

/**
 * 单例模式获取实例
 */
public static OrmTableDao getInstance() {
    if (null == mInstance) {
        synchronized (OrmTableDao.class) {
            if (null == mInstance) {
                mInstance = new OrmTableDao();
            }
        }
    }
    return mInstance;
}

/**
 * 插入单条数据
 *
 * @param table
 */
public void insert(OrmTable table) {
    try {
        int i = mDao.create(table);
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

/**
 * 插入多条数据
 *
 * @param tables
 */
public void insert(List<OrmTable> tables) {
    try {
        int i = mDao.create(tables);
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

/**
 * 查询表中所有数据
 *
 * @return
 */
public List<OrmTable> query() {
    List<OrmTable> ormTables = null;
    try {
        ormTables = mDao.queryForAll();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return ormTables;
}

/**
 * 通过id(@DatabaseField(columnName = "_id", id = true))查询指定数据
 *
 * @param id
 * @return
 */
public OrmTable queryById(String id) {
    OrmTable ormTable = null;
    try {
        /**
         * queryForId(id)的参数(id)类型与Dao<T,ID>中的泛型ID的类型一致
         */
        ormTable = mDao.queryForId(id);
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return ormTable;
}

/**
 * 自定义查询表中数据
 */
public List<OrmTable> queryByCustom() {
    List<OrmTable> ormTables = null;
    QueryBuilder<OrmTable, String> builder = mDao.queryBuilder();
    Where<OrmTable, String> where = builder.where();
    try {
        where.eq("_id", "111")
                .and()
                .eq("name", "aaa");
        ormTables = builder.query();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return ormTables;
}


/**
 * 通过id进行数据删除
 *
 * @param id
 */
public void deleteById(String id) {
    try {
        int i = mDao.deleteById(id);
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

/**
 * 删除表中所有数据
 */
public void deleteAll() {
    try {
        int delete = mDao.deleteBuilder().delete();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}}
    原文作者:南鹏飞
    原文地址: https://www.jianshu.com/p/c80fe4e8cd28
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞