开源 Android ORM 框架 OpenDroid

Apache
Java
Android
2015-01-13
亓斌哥哥

opendroid 是 Android 上的一个开源 ORM 框架,可以轻松实现将数据库中的数据映射到java bean中、将java bean持久化到sqlite中。opendroid也提供了强大的数据库升级方案,只需修改一个参数即可实现数据库升级,opendroid会自动将旧数据更新到新表中,免除数据库升级数据丢失的烦恼。

opendroid 使用简单,语法简洁,预计10分钟即可完全掌握opendroid的使用。

例如:插入一条数据:

Student stu = new Student();stu.setStuName("亓斌");stu.setStuAge(18);stu.save();

opendroid 的上手:

1、将library目录中的opendroid.jar文件copy到你项目的libs目录。
2、在项目中新建需要映射的java bean文件,并让该类继承自OpenDroid类。

public class Student extends OpenDroid {
private String stuName;
private int stuAge;
private String stuAddr;
public String getStuAddr() {
    return stuAddr;
}
public void setStuAddr(String stuAddr) {
    this.stuAddr = stuAddr;
}
public String getStuName() {
    return stuName;
}
public void setStuName(String stuName) {
    this.stuName = stuName;
}
public int getStuAge() {
    return stuAge;
}
public void setStuAge(int stuAge) {
    this.stuAge = stuAge;
}
}

3、在asserts目录中新建open_droid.xml文件

<?xml version="1.0" encoding="utf-8"?>
<open-droid>

   <name value="school" />

    <version value="1" />

    <mapping class="org.loader.opendroid.Student" />
</open-droid>

name 指定了数据库的名称, version指定了数据库的版本, mapping指定了需要映射的javabean

4、配置完成后,开始使用:

    /**
     * step 1 : 插入一条数据, 查询一条数据
     */
    Student stu = new Student();
    stu.setStuName("亓斌");
    stu.setStuAge(18);
    stu.save();

    Student result = OpenDroid.query.find(Student.class, 1);
    System.out.println(result.getStuName());

    /**
     * step 2 : 查询所有记录
     */
    for(int i=0;i<10;i++) {
        Student stu = new Student();
        stu.setStuAge(20 + i);
        stu.setStuName("opendroid" + i);
        stu.save();
    }

    List<Student> result = OpenDroid.query.find(Student.class);
    for(Student res : result) {
        System.out.println(res.getStuName());
    }

    /**
     * step 3 : 查询多条记录
     */
    List<Student> result = OpenDroid.query.find(Student.class, 1, 5, 10);
    for(Student res : result) {
        System.out.println(res.getId() + " : " + res.getStuName());
    }

    /**
     * step 4 : 条件查询
     */
    List<Student> result = OpenDroid.query.columns("stuName", "stuAge")
            .where("_id>?", "5").order("_id DESC").limit(3)
            .find(Student.class);
    for(Student res : result) {
        System.out.println(res.getStuName() + " : " + res.getStuAge());
    }


    /**
     * step 5 : 更新数据
     */
    Student stu = new Student();
    stu.setStuName("loader");
    stu.setStuName("loader");
    stu.update(4);
    stu.update("_id>?", "4");

    List<Student> result = OpenDroid.query.find(Student.class);
    for(Student res : result) {
        System.out.println(res.getStuName());
    }

    /**
     * step 6 : 使用ContentValues更新
     */
    ContentValues cv = new ContentValues();
    cv.put("stuName", "opendroid");
    OpenDroid.update(Student.class, cv, "_id=?", "8");

    Student result = OpenDroid.query.find(Student.class, 8);
    System.out.println(result.getStuName());

    /**
     * step 7 : 特定删除
     */
    int length = OpenDroid.delete(Student.class, 1, 2, 3);
    System.out.println(length);

    /**
     * step 8 : 使用条件删除
     */
    int length = OpenDroid.delete(Student.class, "_id>?", "5");
    System.out.println(length);
的码云指数为
超过 的项目
加载中

评论(7)

dimdim
dimdim
有没有自动根据map生成表
亓斌哥哥
亓斌哥哥 软件作者
OpenDroid源码讲解-打造自己的orm框架:http://blog.csdn.net/column/details/opendroid.html
吴下阿吉
吴下阿吉
不喜欢用ORM,不够还是支持开源精神。 OpenDroid
亚林瓜子
亚林瓜子
习惯了ormlite了 OpenDroid
kymjs张涛
kymjs张涛
请问是否支持含有包含关系的javabean OpenDroid
loyal
loyal
首先开源值得称赞,其次,所有的ORM都该死...望保重. OpenDroid
亓斌哥哥
亓斌哥哥 软件作者
用了四天的时间做的一个android orm框架, 开源咯。OpenDroid

暂无资讯

暂无问答

Android开源库

总结一些常用的android开源库,方便以后在开发中用到来查询。

2015/01/27 11:12
330
2
OSChina 技术周刊第十八期 —— 2015 年 OSC 源创会行程计划

每周技术抢先看,总有你想要的! 移动开发 【软件】开源 Android ORM 框架 OpenDroid 【博客】自己动手做推送 前端开发 【软件】jQuery 全屏滚动插件 fullPage.js 服务端开发/管理 【软件】W...

2015/01/18 21:16
1K
2
ddd

markdown工具预览发表效果测试: 1.B **人生就是用力地吃撑、再用力地把自己折腾饿这样一种伟大的循环** 2.I _人生就是用力地吃撑、再用力地把自己折腾饿这样一种伟大的循环_ 3.H ### 人生就...

2015/05/05 10:23
39
0
代码着色

try { FileInputStream fis = new FileInputStream(source); File targetDir = new File(PathKit.getWebRootPath() + "/" + prefix + "/u/" + ...

2015/05/04 18:46
10
0

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部