Ormlite 介绍 一

article/2025/10/29 11:54:43


概述

     
      ORMlite是类似hibernate的对象映射框架,主要面向java语言,同时,是时下最流行的android面向数据库的的编程工具。
官方网站:http://ormlite.com/ 
如果需要开发android,只需要下载core和android两个jar包:




ORMlite的使用


1,建立映射关系


Ormlite与数据库的映射关系式通过注释来说明的。
注释分为对于表的和对于单个列的:@DatabaseTable ,注释表的, @DatabaseField 注释单个列的。
看例子很好很好懂:


解释一下上面的例子,如果想以类student来建立一张表。

· 首先注释:table@DatabaseTable 如果默认为类名的话,后面不需要添加类名注释。

· 然后:确定需要的字段,在字段上面添加注释:@DatabaseField 如果对字段有特别的要求,那么添加以下相关的注释,例如id


同理,school类为:

[java]  view plain copy
  1. @DatabaseTable(tableName = "school")  
  2. public class School {  
  3.   
  4.     @DatabaseField(generatedId=true)  
  5.     private int id;  
  6.   
  7.     @DatabaseField(columnName = "name")  
  8.     private String name;  
  9.   
  10.     @DatabaseField  
  11.     private String location;  
  12.   
  13.     public int getId() {  
  14.         return id;  
  15.     }  
  16.       
  17.     public void setId(int id) {  
  18.         this.id = id;  
  19.     }  
  20.       
  21.     public String getName() {  
  22.         return name;  
  23.     }  
  24.   
  25.     public void setName(String name) {  
  26.         this.name = name;  
  27.     }  
  28.       
  29.     public String getLocation() {  
  30.         return location;  
  31.     }  
  32.       
  33.     public void setLocation(String location) {  
  34.         this.location = location;  
  35.     }  
  36. }  


2,建立数据库和基本的工具

在android的开发中,google原版封装了一个SqliteOpenHelper,供开发者调用,在OrmLite中,对原版的工具进行了加强,提供一个继承自SqliteOpenHelperOrmLiteSqliteOpenHelper工具。

 

像android一样,我们继承这个工具类。


[java]  view plain copy
  1. public class DBHelper extends OrmLiteSqliteOpenHelper{  
  2.   
  3.   
  4.     private final static int DATABASE_VERSION = 1;  
  5.     Dao<Student, Integer> mStudentDao;  
  6.     Dao<School, Integer> mSchoolDao;  
  7.     private static final String DB_NAME = "orm";  
  8.     private static DBHelper mDbHelper;  
  9.       
  10.     private DBHelper(Context context) {  
  11.         super(context, DB_NAME, null, DATABASE_VERSION);  
  12.     }  
  13.   
  14.   
  15.     public static DBHelper getInstance(Context context) {  
  16.         if (mDbHelper == null) {  
  17.             mDbHelper = new DBHelper(context);  
  18.         }  
  19.         return mDbHelper;  
  20.     }  
  21.       
  22.     @Override  
  23.     public void onCreate(SQLiteDatabase arg0, ConnectionSource arg1) {  
  24.         try {  
  25.             TableUtils.createTableIfNotExists(connectionSource, Student.class);  
  26.             TableUtils.createTableIfNotExists(connectionSource, School.class);  
  27.         } catch (SQLException e) {  
  28.             e.printStackTrace();  
  29.         }  
  30.     }  
  31.   
  32.   
  33.     @Override  
  34.     public void onUpgrade(SQLiteDatabase arg0, ConnectionSource arg1, int arg2,  
  35.             int arg3) {  
  36.     }  
  37.       
  38.     public Dao<Student, Integer> getStudentDao() throws SQLException {  
  39.         if (mStudentDao == null) {  
  40.             mStudentDao = getDao(Student.class);  
  41.         }  
  42.         return mStudentDao;  
  43.     }  
  44.       
  45.     public Dao<School, Integer> getSchoolDao() throws SQLException {  
  46.         if (mSchoolDao == null) {  
  47.             mSchoolDao = getDao(School.class);  
  48.         }  
  49.         return mSchoolDao;  
  50.     }  
  51.   
  52.   
  53. }  


如果写过androidSqliteOpenHelper对这个继承类的写法一定不会陌生。

我解释一下这个的写法:

· 构造函数:

必须调用父类的构造函数,能给它提供的参数有:来自androidcontext,数据库名称,和版本号。

· GetInstance方法:

这个只是为了方便,让DbHelper只保留一个对象的实例,即单例模型。

· OnCreate

实现父类的抽象方法,创建数据库。

· OnUpgrade

 在构造方法中的version如果改变的话,调用这个方法,至于想做什么,这个你来定。常用于app 的版本更新。

· getStudentDao和 getSchoolDao

获取数据库的dao对象,这些dao对象用于后来的数据库操作。dao的声明时泛型了两个参数,第一个是dao操作的关联对象,第二个是标记数据表的ID。这个ID一般很少使用,除非对数据表的ID进行操作的时候。



3,测试

[java]  view plain copy
  1. public class MainActivity extends Activity {  
  2.   
  3.     private static final String TAG = "MainActivity";  
  4.     DBHelper mDbHelper;  
  5.     Dao<Student, Integer> mStudentDao;  
  6.     Dao<School, Integer> mSchoolDao;  
  7.   
  8.     @Override  
  9.     protected void onCreate(Bundle savedInstanceState) {  
  10.         super.onCreate(savedInstanceState);  
  11.         mDbHelper = DBHelper.getInstance(this);  
  12.         try {  
  13.             mSchoolDao = mDbHelper.getSchoolDao();  
  14.             mStudentDao = mDbHelper.getStudentDao();  
  15.         } catch (SQLException e) {  
  16.             Log.e(TAG, "constructor exception", e);  
  17.         }  
  18.         testDao();  
  19.     }  
  20.   
  21.     private void testDao() {  
  22.         Student student1 = new Student();  
  23.         student1.setName("miles");  
  24.         student1.setSchoolId(0);  
  25.           
  26.         Student student2 = new Student();  
  27.         student2.setName("li");  
  28.         student2.setSchoolId(0);  
  29.           
  30.         School school1 = new School();  
  31.         school1.setName("university");  
  32.         school1.setLocation("shanghai");  
  33.           
  34.         School school2 = new School();  
  35.         school2.setName("middle school");  
  36.         school2.setLocation("hubei");  
  37.           
  38.         try {  
  39.             mSchoolDao.create(school1);  
  40.             mSchoolDao.create(school2);  
  41.             mStudentDao.create(student1);  
  42.             mStudentDao.create(student2);  
  43.             //获取表中所有的student。  
  44.             List<Student> students=mStudentDao.queryForAll();  
  45.             Log.e(TAG, "before delete the student list:size is:"+students.size());  
  46.             for (int i = 0; i < students.size(); i++) {  
  47.                 Log.e(TAG, students.get(i).getName());  
  48.             }  
  49.             mStudentDao.delete(student1);  
  50.               
  51.             students=mStudentDao.queryForAll();  
  52.             Log.e(TAG, "after delete the student list:"+students.size());  
  53.             for (int i = 0; i < students.size(); i++) {  
  54.                 Log.e(TAG, students.get(i).getName());  
  55.             }  
  56.               
  57.         } catch (SQLException e) {  
  58.             e.printStackTrace();  
  59.         }  
  60.     }  
  61. }  

DDMS里面的 File Explore里面的data/data/项目包名/databases里面可以看到有一个db的文件。




可以看到log 里面打出来的


 

说明做了添加和删除操作,同时查找也成功了。




转自:http://blog.csdn.net/yunxiaoxiaoyun/article/details/16873669









http://chatgpt.dhexx.cn/article/kjLUwDZW.shtml

相关文章

Ormlite基本使用

首先需要导入ORMLite的依赖&#xff1a;在build.gradle中加入以下代码&#xff1a; implementation com.j256.ormlite:ormlite-android:5.1implementation com.j256.ormlite:ormlite-core:5.1建立Bean类&#xff08;以OneTableBean为例&#xff09; import com.j256.ormlite.f…

Android 数据库框架ormlite 使用

ormlite是什么&#xff1f; 首先可以去它的官网看看www.ormlite.com&#xff0c;它的英文全称是Object Relational Mapping&#xff0c;意思是对象关系映射&#xff1b;如果接触过Java EE开发的&#xff0c;一定知道Java Web开发就有一个类似的数据库映射框架——Hibernate。简…

Android ORMLite数据库简介

&#xfeff;&#xfeff; 一般的项目中&#xff0c;Android自身提供的SQLite数据库&#xff0c;可以满足轻量级的数据存储应用&#xff0c;但是&#xff0c;只要是存储模型稍微复杂的项目&#xff0c;以及数据结构模型复杂的应用&#xff0c;就很难再用SQLite支撑整个项目的数…

python的网络请求库urllib、urllib2、urllib3、request的联系

文章目录 1. 简介2. urllib3. urllib24. urllib35. requests6. 相关文章 1. 简介 urllib、urllib2、urllib3、request均能通过网络访问互联网上的资源文件&#xff0c;它们通过使用统一资源定位符&#xff08;URL&#xff09;并结合re模块完成很多意想不到的操作。 urllib&am…

python3安装urllib2_python3.6想使用urllib2包怎么办

Python3.6.6或者说python3.x找不到urllib2语法问题修改之后&#xff0c;会报一个没有安装urllib2的包的错误。 通过pip install urllib2也会提示找不到包。(推荐学习&#xff1a;Python视频教程) 通过pip3 install urllib2也会提示找不到包。 这是因为builtwith依赖于urllib2包…

pythonurllib2方法_解决python3.6想使用urllib2包的方法

解决python3.6想使用urllib2包的方法 发布时间&#xff1a;2020-08-11 14:24:50 来源&#xff1a;亿速云 阅读&#xff1a;131 作者&#xff1a;小新 小编给大家分享一下解决python3.6想使用urllib2包的方法&#xff0c;相信大部分人都还不怎么了解&#xff0c;因此分享这篇文章…

python安装urllib2_Python如何安装urllib2库

urllib2 是 Python2.7 自带的模块(不需要下载,导入即可使用)。 urllib2库的基本使用 所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地。 在Python中有很多库可以用来抓取网页,我们先学习urllib2。urllib2 是 Python2.7 自带的模块(不需要下载,…

python爬虫-urllib2的使用方法详解(python3)

文章目录 python编程快速上手&#xff08;持续更新中…&#xff09;python爬虫从入门到精通urllib2概述python2与python3对比urlopenRequestUser-Agent添加更多的Header信息 urllib2默认只支持HTTP/HTTPS的GET和POST方法URL编码转换&#xff1a;urllib.parse.urlencode模拟百度…

Urllib2库丨Python爬虫基础入门系列(12)

提示&#xff1a;文末有福利&#xff01;最新Python爬虫资料/学习指南>>戳我直达 文章目录 前言Urllib2库学习目的urlopenGET请求方式利用urllib2.Request类,添加Header信息POST请求方式抓取招聘信息思考一下 小结 总结 前言 Urllib2库 urllib2是python2.7自带的模块(不…

Hyper-V虚拟化

第一章 Hyper-V 介绍 1-1 Hyper-V发展历史 2003 年&#xff0c;微软收购了一家虚拟化软件公司。2004 年推出了第一个桌面虚拟化产品Virtual PC 2004&#xff0c;其功能类似于VMware 工作站(work station)。由于该虚拟化产品集成在操作系统之中&#xff0c;所以用户可以在windo…

QNX Hypervisor管理程序

QNX Hypervisor管理程序 借助 QNX 管理程序&#xff0c;可以将具有不同操作系统&#xff0c;不同可靠性和安全要求的多个嵌入式系统&#xff0c;整合到单个片上系统 (SoC) 中。可以轻松地将未修改的代码移动到最新的硬件上&#xff0c;只需在适当配置的hypervisor 管理程序虚拟…

怎么开启windows hypervisor platform,解决hypervisor platform消失无法安装的问题

正常的windows功能面板 我的 很好,没有安装windows hypervisor platform的机会,但是没关系(ps:此处描述有误中文名称应该是虚拟机监控程序平台) 然后cmd 或powershll 管理员身份运行 Dism /online /Get-Features 可以查看到hypervisor platform是禁用状态 ::%cd%代表的是执…

Android Studio安装常见问题详解——Android Emulator Hypervisor Driver for AMD Processors installation failed.

目录 一、问题描述二、解决方案2.1 开启CPU虚拟化2.2 禁用Hyper-V2.3 使用管理员命令行在驱动程序包中执行“silent_install.bat” 一、问题描述 新买的AMD轻薄本&#xff0c;在安装Android Studio时遇到问题&#xff1a; Android Emulator Hypervisor Driver for AMD Process…

Hypervisor之半虚拟化virtio

1 基本概念 virtio共享内存使用的是guest GPA&#xff0c;由guest virtio front-end驱动初始化队列的时候分配&#xff0c;在back-end驱动中&#xff0c;QVM或者QEMU将GPA转换到HVA或者HPA地址再读写数据。 virtio front-end通知back-end方式&#xff1a;访问doorbell寄存器触发…

VMware vSphere Hypervisor (ESXi) 7.0U3g安装

VMware vSphere Hypervisor“ESXi” 7.0U3g 安装 一、准备工作1、查看支持ESXI7.0U3的CPU型号&#xff1b;2、下载将镜像制作成安装盘的软件&#xff1b;3、注册vmware账号&#xff0c;下载ESXI7.0U3镜像&#xff1b; 二、安装VMware vSphere Hypervisor (ESXi) 7.0U3g三、配置…

Vmware vSphere hypervisor 虚拟化软件安装

目录 一、概述 1.1.什么是 vSphere Hypervisor&#xff1f; 二、U盘启动制作 2.1. ultraiso安装完成后打开文件 2.2.选择我们下载好的虚拟化软件ios 2.3.写入映像文件 2.4.写入硬盘映像&#xff0c;驱动器选择插入的U盘 三、 Vmware vSphere hypervisor安装 四、虚拟机…

Hypervisor---虚拟化技术简易说明

Hypervisor&#xff0c;虚拟机监视器&#xff08;英语&#xff1a;virtual machine monitor&#xff0c;缩写为 VMM&#xff09;&#xff0c;是一种运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件。 被Hypervisor用来执行一个或多个虚拟机器…

hypervisor - qnx

按照definition of Goldberg (1973), Hypervisor – Wikipedia: qnx hypervisor is type 2 QNX considers its hypervisor to be a type 1 (although it is a type 2)

什么是虚拟机管理程序hypervisor,什么是hypervisor type 1, hypervisor type 2

服务器虚拟化目前是IT界的一个热门话题。它的受欢迎程度和使用率一直在增长&#xff0c;尤其是在企业环境中。使虚拟化成为可能的是所谓的hypervisor 管理程序。服务器虚拟化允许不同的操作系统在一台服务器上运行单独的应用程序&#xff0c;同时仍使用相同的物理资源。这些虚拟…

了解以及区分物理机,虚拟机(hypervisor/VMM) 和 容器(Docker)的适用场景

了解以及区分物理机&#xff0c;虚拟机hypervisor/VMM 和 容器Docker的适用场景 Abbreviations物理机和虚拟机以及容器的区别动机motivation&#xff1a;为什么要有虚拟机物理机:虚拟机容器 虚拟机的种类以及他们的本质区别虚拟化方式虚拟机类型docker技术传统计算机体系结构虚…