ORM,即Object Relation Mapping,对象关系映射,实现了程序里面的类和数据库里面的数据之间的对应关系,对数据库的操作可以通过对类的操作去实现,不用再写SQL语句,从而提高了开发效率,节省了开发时间。

在Java Web开发中,有很多的ORM框架,如Hibernate等。在Android开发中,也有一些ORM框架,实现了对SQLite数据库的操作。比如说Litepal、GreenDAO、OrmLite等。本文重点介绍Litepal。

1. 映射文件和实体类

下载Litpal的Jar文件,并复制到libs文件夹下面。在assets文件夹下面新建一个litepal.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="easydb" />
<version value="1" />
<list>
<mapping class="com.example.hzhi.fragmentdemo.Myclass" />
</list>
</litepal>

其中Myclass是实体类:

package com.example.hzhi.fragmentdemo;

import org.litepal.crud.DataSupport;

/**
* Created by Administrator on 2016/8/27.
*/
public class Myclass extends DataSupport { private Integer Id;
private String Name;
private String Teacher;
private Integer Studytime;
private String Picture; public Myclass() {
} public Myclass(Integer id, String name, Integer studytime, String teacher, String picture) {
Id = id;
Name = name;
Studytime = studytime;
Teacher = teacher;
Picture = picture;
} public Integer getId() {
return Id;
} public void setId(Integer id) {
Id = id;
} public String getName() {
return Name;
} public void setName(String name) {
Name = name;
} public String getTeacher() {
return Teacher;
} public void setTeacher(String teacher) {
Teacher = teacher;
} public Integer getStudytime() {
return Studytime;
} public void setStudytime(Integer studytime) {
Studytime = studytime;
} public String getPicture() {
return Picture;
} public void setPicture(String picture) {
Picture = picture;
} }

这样就设置了数据库的表和实体类的对应关系,当进行数据库操作时,如果数据库还没有这张表,就会新建一张表,表的名称和实体类的名称相同,表的字段就是实体类的属性。

在AndroidManifest.xml文件中的application节点加上配置:

android:name="org.litepal.LitePalApplication"

2. 插入数据

代码很简单:

        mc = new Myclass();
mc.setId(0);
mc.setName("计算机网络");
mc.setTeacher("张三");
mc.setStudytime(120);
mc.save();

是不是几乎和Hibernate的插入数据一模一样?省去了写SQL语句的麻烦!

3. 查询数据

public static List<Myclass> listClass;
listClass = DataSupport.findAll(Myclass.class);

以上语句是查询出所有的记录。还有其他一些方法:

(1)DataSupport.findAll(Myclass.class, 1, 3, 5),查询ID为1、3、5的数据;

(2)DataSupport.select().where().order().find(Myclass.class),指明了要查询的字段以及查询条件;

(3)Cursor cursor = DataSupport.findBySQL(),按照SQL语句查询;

(4)DataSupport.findFirst(),查询第一条记录;

(5)DataSupport.findLast(),查询最后一条记录。

Android ORM -- Litepal(1)的更多相关文章

  1. Android ORM -- Litepal(2)

    4. 更新数据 ContentValues value = new ContentValues(); value.put("name", "计算机网络2"); ...

  2. 最好的5个Android ORM框架

    在开发Android应用时,保存数据有这么几个方式, 一个是本地保存,一个是放在后台(提供API接口),还有一个是放在开放云服务上(如 SyncAdapter 会是一个不错的选择). 对于第一种方式, ...

  3. Android ORM应用开发框架KJFrameForAndroid使用详解

    本文将为大家介绍一款Android ORM应用开发框架KJFrameForAndroid,很多时候我们也叫它KJLibrary. KJFrameForAndroid简介 KJFrameForAndro ...

  4. 推荐的Android ORM框架

    1. OrmLite OrmLite 不是 Android 平台专用的ORM框架,它是Java ORM.支持JDBC连接,Spring以及Android平台.语法中广泛使用了注解(Annotation ...

  5. 简单实用的Android ORM框架TigerDB

    TigerDB是一个简单的Android ORM框架,它能让你一句话实现数据库的增删改查,同时支持实体对象的持久化和自动映射,同时你也不必关心表结构的变化,因为它会自动检测新增字段来更新你的表结构. ...

  6. 最受欢迎的5个Android ORM框架

    在开发Android应用时,保存数据有这么几个方式, 一个是本地保存,一个是放在后台(提供API接口),还有一个是放在开放云服务上(如 SyncAdapter 会是一个不错的选择). 对于第一种方式, ...

  7. Android ORM SQL Top 5

    If you are developing an Android application, you will likely need to store data somewhere. You may ...

  8. Android ORM——初识greenDAO 3及使用greenDAO 3前应该掌握的一些知识点(一)

    引言 总所周知,SQLite--内嵌于Android中一个占用内存极小的关系型,作为我们Android存储领域中重要的一员 ,或多或少都曾接触到数据库.即使Android系统中提供了很多操作SQLit ...

  9. Android ORM 框架之 greenDAO 使用心得

    前言 我相信,在平时的开发过程中,大家一定会或多或少地接触到 SQLite.然而在使用它时,我们往往需要做许多额外的工作,像编写 SQL 语句与解析查询结果等.所以,适用于 Android 的ORM  ...

随机推荐

  1. css居中div的几种常用方法

    在开发过程中,很多需求需要我们居中一个div,比如html文档流当中的一块div,比如弹出层内容部分这种脱离了文档流等.不同的情况有不同的居中方式,接下来就分享下一下几种常用的居中方式. 1.text ...

  2. Effective java笔记(二),所有对象的通用方法

    Object类的所有非final方法(equals.hashCode.toString.clone.finalize)都要遵守通用约定(general contract),否则其它依赖于这些约定的类( ...

  3. 浅谈JSP中include指令与include动作标识的区别

    JSP中主要包含三大指令,分别是page,include,taglib.本篇主要提及include指令. include指令使用格式:<%@ include file="文件的绝对路径 ...

  4. Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define ...

    Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define ... 这个错误是因为有两个相 ...

  5. 一切从“简”,解放IT运维人员

    运维人的神技 运维既是个技术活儿也是个苦差事,而运维人员被期望有着无限的技能:主机.存储.网络.操作系统样样精通,而且还要会写SQL.shell.开发语言java..net.python等等,对业务更 ...

  6. MongoDB学习笔记~对集合属性的操作

    回到目录 $unset清除元素 请注意在单个数组元素上使用$unset的结果可能与你设想的不一样.其结果只是将元素的值设置为null,而非删除整个元素.要想彻底删除某个数组元素,可以用$pull 和$ ...

  7. github中的watch、star、fork的作用

    [转自:http://www.jianshu.com/p/6c366b53ea41] 在每个 github 项目的右上角,都有三个按钮,分别是 watch.star.fork,但是有些刚开始使用 gi ...

  8. DDD中的Unitwork与DomainEvent如何相容?(续)

    上篇中说到了面临的问题(传送门:DDD设计中的Unitwork与DomainEvent如何相容?),和当时实现的一个解决方案.在实际使用了几天后,有了新的思路,和@trunks 兄提出的观点类似.下面 ...

  9. 钉钉开放平台demo调试异常问题解决:hostname in certificate didn't match

    今天研究钉钉的开放平台,结果一个demo整了半天,这帮助系统写的也很难懂.遇到两个问题: 1.首先是执行demo时报unable to find valid certification path to ...

  10. [翻译]Orchard如何工作

    Orchard一直是博主心中神一般的存在,由于水平比较菜,Orchard代码又比较复杂看了几次都不了了之了.这次下定决心要搞懂其工作原理,争取可以在自己的项目中有所应用.为了入门先到官网去学习一下相关 ...