从无到有看文档-----Android中ORMLite框架入门使用指南(为了小白)

Android ORM数据库之OrmLite使用框架及源码分析 一、简介  OrmLite是一个数据库框架,这个可以让我们快速实现数据库操作,避免频繁手写sql,提高我们的开发效率,减少出错的机率。  首先可以去它的官网看看www.ormlite.com,它的英文全称是Object Relational Mapping,意思是对象关系映射;如果接触过Java EE开发的,一定知道Java Web开发就有一个类似的数据库映射框架——Hibernate。简单来 阅读详情

本文会介绍学习框架基本功能的步骤。
更多的是如何根据官方文档提供的内容学习该框架。
高手请留情别打脸。
如果只是想简单的拿过来就用,那么可以移步鸿洋大神的博客。


原创文章,转载请注明出处:http://blog.youkuaiyun.com/android_zyf/article/details/61624549

一,下载Jar包

1,打开ORMLite官网(百度搜索即可)

http://ormlite.com/sqlite_java_android_orm.shtml

是不是看不懂?看不懂可以翻译啊~

翻译走起

2,找文档

一般网上的框架,都会提供文档供开发者使用(废话,要不然谁会啊)。
直接就能在当前页面找到文档链接,点进去就开整呗。

入门链接

3,查看文档

看文档都说了,要使用Android应用程序需要两个jar文件

看文档

jar包链接

4,下载jar包

原谅我放荡不羁英文差,截图中的care指的是core(就不改了哈)

开整

二,在工程中使用

1,导入jar包

把两个需要的jar包,放在工程的libs文件夹下。

导入jar包

2,继续文档(配置类)

可以看到文档的第二步叫配置类,这时就已经开始告诉我们如何去使用了。
但是这里的文字描述比较冗长,如果有基本的数据库概念的话,还是可以慢慢的看懂的。
但是后面有个设置类的链接,一般这种情况不要去点,点进去会发现好多内容,在刚开始学习一个框架的时候,是没有必要看的那么细的,我们首先要将该框架最基本的功能实现出来。

这个类就是我们常说的bean类,一般情况下一个bean类就对应着数据库中的一个表结构。
bean类中的属性,就对应表中的列。

配置类

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

@DatabaseTable(tableName ="accounts")//设置表名
public class Account {

    @DatabaseField(id = true)//设置name字段为主键
    private String name;
    @DatabaseField
    private String password;

    public Account(){
        // ORMLite需要一个无参数的构造函数
    }

    public Account(String name, String password) {
        this.name = name;
        this.password = password;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}
3,继续文档(配置DAO)

可能有的小伙伴比较疑惑DAO是什么?也可能有些小伙伴根本不管他是什么,为什么叫DAO,能用就行了。
刚开始的话肯定是后者最好,刚开始学习,还是以出来效果为主,不求甚解也是可以的。
但是如果有精力的话,最好理解理解DAO是什么意思。
这里提供一个网址,感兴趣的可以去了解了解:http://www.ziqiangxuetang.com/design-pattern/data-access-object-pattern.html

在这里,DAO类就是来操作数据库内容的,不同类型的DAO就对应着操作数据库中的不同的表。
图中的connectSource这个参数是哪个,这一路过来也没见过啊。

配置DAO

4,继续文档(代码示例)

带着疑问我们继续往下看,connectSource参数是什么呢?这个创建DAO的代码要写在哪儿呢?还不知道对不对,我们根据浏览文档浏览到那里,是不知道要写在哪儿的,我们只能往下看,看到了有代码示例。

Android链接

三,Android示例

1,Android基础

文档4.1Android基础的内容,就阐述了如何在Android系统下,使用ORMLite框架。
what the xxx,这么一堆,说好的不求甚解呢?(当然推荐还是尝试着看一看)
我们可以看到有个示例项目在线的链接,点进去。

去找代码

2,我好像找到了什么

看看例子怎么写的。

看例子

3,看代码自己写Helper类

很尴尬的是你会发现不止翻译了内容,还把代码也翻译了,所以我们这么看。

译

原

会发现写法与Android提供的SQLiteOpenHelper类差不多,很类似。
下面是一部分简单的实现,对照上图中链接的内容写就能写出来了

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

import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.support.ConnectionSource;
import com.j256.ormlite.table.TableUtils;

import java.sql.SQLException;

/**
 * Created by zyf on 2017/3/12.
 */

/***
 * 数据库助手类,用于管理数据库的创建和升级。<br />这个类通常也提供其他类使用的DAO。
 */
public class MyOrmHelper extends OrmLiteSqliteOpenHelper {

    /**
     * 数据库名字
     */
    private static final String DB_NAME = "native.db";

    /**
     * 数据库版本,第一次创建数据库时版本号为1,
     * 如果在这里改为2,那么再次初始化helper对象时,版本号就为2了
     * 就会执行onUpgrade方法,也可以自己优化将它设为构造方法的参数,动态更改
     */
    private static final int DB_VERSION = 1;

    /**
     * 操作表Account的DAO对象<br />
     * 泛型中第一个添入的是表存的内容对应的类型,第二个是ID列的类型。<br />
     * 如果没有指定ID列,第二个参数可以填Object或Void
     */
    private Dao<Account, String> accountDao;

    /**
     * 我们只有一个context对象是需要自己填入的。<br />
     * 剩下的不是已经设置好的,就是可以使用默认的。<br />
     * 所以我们再定义一个构造方法。
     *
     * @param context
     */
    public MyOrmHelper(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
    }

    /**
     * 有了上面那个,这个就可以弃用了,注掉或删掉都行。
     *
     * @param context
     * @param databaseName
     * @param factory
     * @param databaseVersion
     */
    @Deprecated
    public MyOrmHelper(Context context, String databaseName, SQLiteDatabase.CursorFactory factory, int databaseVersion) {
        super(context, databaseName, factory, databaseVersion);
    }

    /**
     * 第一次创建时调用
     *
     * @param sqLiteDatabase   数据库对象
     * @param connectionSource 资源连接对象
     */
    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) {
        //使用ORMLite提供的TableUtils类来创建数据库
        try {
            TableUtils.createTable(connectionSource, Account.class);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     * 当版本号增加时,也就是数据库要升级或更新时调用
     *
     * @param sqLiteDatabase   数据库对象
     * @param connectionSource 资源连接对象
     * @param i                老版本
     * @param i1               新版本
     */
    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource, int i, int i1) {
        try {
            //下面方法的内容是文档中的例子
            //demo();
            //更改表以添加名为“age”的新列
            getAccountDao().executeRaw("ALTER TABLE 'accounts' ADD COLUMN age INTEGER;");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取操作Account表的DAO对象
     * @return
     */
    public Dao getAccountDao() {
        if (accountDao == null) {
            try {
                accountDao = getDao(Account.class);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return accountDao;
    }

    /**
     * 在关闭数据库连接的时候,将DAO对象都制空<br />
     * 有助于GC清理缓存
     */
    @Override
    public void close() {
        super.close();
        accountDao = null;
    }

    private void demo(){
        //删除原来的数据库
        //不会保留原数据
        TableUtils.dropTable(connectionSource,Account.class,true);
        //调用创建方法
        onCreate(sqLiteDatabase,connectionSource);
    }
}

四,使用示例

1,增加数据

create方法是在哪儿看到的呢?如果细心的一步步走过来的话,就能知道create是在三-3中,在示例代码中看到,它创建数据库时就做了添加的操作,我们只不过是把添加的操作拿出来了。
这里需要注意一个问题,如果重复添加name属性相同的数据,会报错,不会蹦是因为异常被catch了,原因是Account类中@DatabaseField(id = true)注解将name属性设为了主键,而在数据库中主键是不可以重复的。

//获得Helper类对象
MyOrmHelper myOrmHelper = new MyOrmHelper(getContext());
//创建要插入的数据
Account account = new Account();
account.setName("测试名字"+(anInt++));
account.setPassword("测试密码");
account.setAge(20);
//根据helper对象获得操作Account表的DAO对象
Dao dao = myOrmHelper.getAccountDao();
dao.create(account);
2,查找数据

在示例代码中并没有查找数据的代码,我们也就不知道应该用什么方法去查。
所以只能继续找文档咯。
文档中肯定提供了查询数据的代码示例,找到就行了。
在4.2的上面,我发现了目录。

去目录

3,目录gogogo

在目录中,很容易就找到了自定义语句生成器,使用一个很简单的查询过程。

//查询所有
List<Account> accounts = dao.queryForAll();
    for (Account a :accounts) {
    Log.e(TAG, "onClick: " + a.getName());
}

//条件查询
QueryBuilder<Account,String > queryBuilder = dao.queryBuilder();
//添加where语句
queryBuilder.where().eq("age",20).and().eq("name","测试名字4");
//这个准备的方法我也没细看是在干什么,这都是在文档中找到的使用方法
PreparedQuery<Account> preparedQuery = queryBuilder.prepare();
//查询结果
List<Account> whereQuery = dao.query(preparedQuery);
for (Account a : whereQuery) {
    Log.e(TAG, "onClick: "+a.getName());
}

剩下的更新删除什么的,小伙伴们就可以自己在文档中找啦。
还有这里是把name设置为主键了,一般不都是主键默认为id,并且自增的吗,这个该怎么设置呢?文档中肯定有啊哈哈哈。
与其去百度搜SRMLite如何更新数据,不如自己去文档中找一下,然后自己记下来或者写个博客啥的,出去装x不也能收获个666嘛。

数据存储之ORMlite框架总结 1.介绍ormlite 是类似hibernate的对象映射框架,主要面向java语言,具有轻量级、关系持久化等特点,支持着包括mysql,sqlite,和H2等多种的数据库。作为一个开源的框架,ormlite的源代码、文档以及demo都比较多,版本的迭代更新也很迅速,这都是我们选择它的一个强心针。 官网:http://ormlite.com/ 如果需要开发android,只需要下载core和a 阅读详情

相关推荐

OrmLite框架 —— OrmLite 复杂条件查询(二)

注:本片文章参考于http://blog.youkuaiyun.com/industriously/article/details/50790624OrmLite 三篇文章 OrmLite 入门使用 OrmLite 复杂条件查询 OrmLite 框架封装及使用 简介这篇文章主要介绍 OrmLite 框架中使用到的一些查询方法.WEHRE子句在SQL语句中,经常会用到where语句,where 进行条件筛选。

CFOX 8278

Android 数据库框架ormlite 使用

...

hdhhd的博客 2793

Android快速开发OrmLite数据库封装详解

Android移动开发之数据库——OrmLite详解随着开源框架的广泛,对于Android开发者越来越有优势,极大的提高了开发效率和开发周期。android系统的sqlite轻量级数据库操作SQL语句较为麻烦,如果不熟悉Web开发的朋友可能对SQL语句还比较陌生。一、本文可以让你学到的内容:1.使用第三方框架OrmLite数据库开发Android移动应用程序; 2.不再使用SQL语句实现增删查改,

一名互联网时代苟且偷生的 Android码农 2535

ORMLite完全解析(四) 官方文档第四章、在Android中使用

官方文档的第四章原标题是Using With Android,  看过前面的文档友友,看到这里可能会有点晕乎,因为从一开始就在介绍ORMLite在Android中的介绍,但是到第四章还出现这个标题。这是因为,这个框架并不是Android中专用的,前面几章的内容在原文档中和在所有数据库中其实是通用的,这个框架可以整合的数据库还有很多。文档首页有这样一段话:        ORMLite suppo

OyangYujun的专栏 1869

ORMLite源码及api文档

ormlite4.48源码以及api说明文档,不包含jar包

ormlite文档

ormlite开发文档,虽说是英文文档的。但是里面的单词难不倒你的

Android数据库ORMlite框架翻译系列

前言   个人感觉android上sqlite已经比较好用,但是如果需要在android上像J2EE那样开发的话那么sqlite还是显得比较复杂,这个时候你当然可以选择一些android平台上的ORM框架。ORM框架是做什么的,android平台上有哪些好用的ORM框架,这些问题你通通可以google得到你满意的结果,在此不做解释。本系列主要是翻译ORMlite文档。   为什么翻译ORMli

凯奥的专栏 991

Android 5.1 API文档

从谷歌sdk manager上面获取的,打包上来,上次到百度云上了,各位可以下载浏览

A Fast, Simple, Typed ORM for .NET

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34124939的博客 1692

ormlite帮助文档

ormlite官方使用帮助pdf格式的,官网上也能下载到

ORMLite jar、文档、源码、以及博客实例

代码为博客实例代码,有问题请博客留言:http://blog.youkuaiyun.com/lmj623565791/article/details/39122981

ORMLite完全解析(二)官方文档第二章、如何使用ORMLite

前面一篇文章通过一个实例,介绍了ORMLite的使用方法,为了控制篇幅,里面的代码有些是不完整的,但是基本能够说明整个流程。对于这类开源框架,要记住所有内容,是不可能的,而且也不是最合理的学习方法,其实只要理解了这类框架的实现机制,记住了关键的内容,遇到问题知道怎么去寻找答案就可以了,后面在使用的过程中,再慢慢熟能生巧。通过前面一篇文章,结合官方实例,自己运行一下,修改体验一下,应该就能够理解。后

OyangYujun的专栏 1万+

[置顶]android ORM Lite框架,对象与数据库表的映射。android的 sqlite操作不用写SQL语句.docx

[置顶]android ORM Lite框架,对象与数据库表的映射。android的 sqlite操作不用写SQL语句.docx

ORMLite文档 - 和安卓一起使用

4.1安卓基础    如何在安卓系统上使用ORMLite。 4.2使用表设置文件    使用表设置文件来加速启动。 4.3安卓Logging    如何在安卓下记录消息。 4.4运行时异常与SQL异常    运行时异常与SQL异常对比。 4.5升级

Terry的博客 1925

QGIS三维地形可视化实战:从DEM数据到炫酷3D场景(附Qgis2threejs插件配置)

本文详细介绍了如何利用QGIS和Qgis2threejs插件,将DEM数据转化为交互式三维地形场景的完整工作流。核心内容包括DEM数据准备、坐标系选择(重点对比WGS 84与UTM的差异及影响)、插件核心参数配置、卫星影像与等高线叠加等进阶技巧,并提供了成果导出与常见问题解决方案,帮助用户高效创建可用于网页展示的炫酷3D可视化成果。

mqtt6iot的博客 875

dify1.3.1应用服务与数据服务分离,附件及插件包迁移至minio,实现离线部署,保证插件正常运行

dify1.3.1应用服务与数据服务分离,附件及插件包迁移至minio,实现离线部署,保证插件正常运行

Time_1023的博客 1872

【安卓笔记】ormlite入门

ps:写这篇文章的目的是尝试下新的markdown编辑器哈哈简介 ORMLite provides a lightweight Object Relational Mapping between Java classes and SQL databases. There are certainly more mature ORMs which provide this functionality

RowandJJ 1870

Mac安装Weblogic教程

1.Weblogic的下载 这次安装的是最新版本12 官网下载地址: http://www.oracle.com/technetwork/middleware/weblogic/downloads/index.html 下载需要登录账号,如没有账号要注册一个 下载后的文件如下图,其中fmw_12.2.1.3.0_wls_quick.jar文件就是安装包了,注意现在不要对它进行解压 2.安装前的确...

weixin_40102675的博客 5063

android ormlite框架的理解,Android ORMLite框架入门级介绍

以前使用数据库都是使用Android官方推荐的SQLiteOpenHelper,用过的都知道,比较难用。一直想找一个比较好用的数据库框架,直到我遇到了ORMLite框架~这里写了一个小Demo抛砖引玉,github项目地址先来一段复制粘贴的简介: ORM(全称Object Relation Mapping)叫做对象关系映射,是一种程序设计技术,用于实现面向对象编程语言中不同类型系统的数据之间的转换...

weixin_39911567的博客 439

星辰超级智能体TeleClaw桌面版深度体验:央企出品的本地AI生产力助手

中国电信星辰超级智能体TeleClaw桌面版是一款本地化AI生产力助手,主打数据安全、自主高效和深度协同。作为程序员,作者实测其核心功能包括本地数据处理、长期记忆、定时任务和代码开发辅助,特别适合敏感数据处理和日常办公自动化。相比在线AI工具,TeleClaw在数据安全、合规性和自动化能力方面优势明显,但技能生态和响应速度仍有提升空间。总体评价为务实高效的本地AI助手,尤其适合对数据安全有要求的企业用户。

研究中.... 1352

AUTOSAR实战:手把手教你配置EthTsync模块,搞定车载以太网时间同步

本文详细解析AUTOSAR架构中EthTsync模块的配置方法,实现车载以太网时间同步。通过对比gPTP与PTP协议差异,提供从开发环境准备到参数配置、模块集成的全流程指南,并分享性能优化与调试技巧,帮助开发者实现微秒级同步精度,满足自动驾驶等高精度时间同步需求。

weixin_28736335的博客 374

Android ORM 框架之 Android中ORMLite应用基础

ORMLite是常用的一个ORM框架,她不止可以用在Android的sqlite数据库,也可以使用她操作其他常见的数据库。这儿是根据官方文档抽取来的android用法。一,添加依赖导入ormlite-core.jar和ormlite-android.jar:下载jar 或者build.gradle中添加: compile 'com.j256.ormlite:ormlite-android:5

欸奥维 1837

AMCL实战:如何用2D激光雷达在ROS中实现稳定重定位(附参数调优指南)

本文深入解析了在ROS中使用2D激光雷达实现稳定AMCL重定位的实战技巧与参数调优指南。针对粒子发散、位姿跳变等常见问题,文章从算法核心原理出发,系统讲解了初始化、粒子滤波、运动与观测模型等关键参数的分类与调优策略,并提供了一套经过验证的调优框架,帮助开发者提升移动机器人在已知地图环境下的定位鲁棒性和稳定性。

sql99的博客 135

Android 数据库—ORMlite 框架详情

前言本篇博客记录一下笔者在实际开发中使用到的一个数据库框架,这个可以让我们快速实现数据库操作,避免频繁手写sql,提高我们的开发效率,减少出错的机率。ORMlite是什么?它的英文全称是Object Relational Mapping,意思是对象关系映射;是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”

程序病毒小队的博客 704

使用Matlab实现海洋监视雷达检测仿真

海洋监视雷达是一项重要的海洋探测技术,可以用于海上船只、飞机、潜艇等目标的探测和监视,具有广泛的应用价值。本篇文章将介绍如何使用Matlab进行海洋监视雷达的检测仿真,并提供相应的源代码。本篇文章提供了利用Matlab进行海洋监视雷达检测仿真的基本思路和代码实现。读者可以根据自己的需求进行修改和优化,以适应不同的应用场景。使用Matlab实现海洋监视雷达检测仿真。

2301_78484069的博客 448

10步掌握!跨国企业在MySQL中实现数据主权的秘诀 vs. 传统方法,你选对了吗?

首先,我们要明确“数据主权”这一概念。简单来说,它指的是国家对其境内产生的所有类型的数据拥有绝对控制权。这意味着即使数据被存储在国外服务器上,只要该数据来源于某国,那么该国政府就有权对其进行监管。对于跨国公司来说,这就要求它们必须严格遵循不同国家关于数据保护的规定,如欧盟的GDPR、美国的《云法案》以及中国的《网络安全法》等。

java专栏 714
上一篇: 在mac系统下配置环境变量
下一篇: JavaScript入门指南---(一)、认识JavaScript
george_zyf
博客等级 码龄11年 132粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值