Android ORM -- Litepal(1)

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(),查询最后一条记录。

原文地址:https://www.cnblogs.com/mstk/p/5813369.html