你的位置:首页 > 操作系统

[操作系统]Android ORM


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

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

1. 映射文件和实体类

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

<??><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;  }}

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

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),表明查询第1、3、5条数据;

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

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