当前位置: 首页 > 工具软件 > u-orm > 使用案例 >

JackKnife开发专题-性能强大的ORM框架- JackKnife-ORM

赵嘉赐
2023-12-01

开发 JackKnife框架已经好几个月了,一直在忙项目的事,空余时间才有时间去维护 JackKnife框架,现在jackKnife框架已经慢慢强大了,最近公司做的物联网项目,我也在用自己的JackKnife框架,目前我们公司的物联网全款我的JackKnife-orm框架保存数据。

JackKnife框架官网:http://www.jackwhliu.cn/jackknife/

github传送门:https://github.com/JackWHLiu/jackknife

ORM的概念 
        让我们从O/R开始。字母O起源于"对象"(Object),而R则来自于"关系"(Relational)。几乎所有的程序里面,都存在对象和关系数据库。在业务逻辑层和用户界面层中,我们是面向对象的。当对象信息发生变化的时候,我们需要把对象的信息保存在关系数据库中。 
        当你开发一个应用程序的时候(不使用O/R Mapping),你可能会写不少数据访问层的代码,用来从数据库保存,删除,读取对象信息,等等。你在DAL中写了很多的方法来读取对象数据,改变状态对象等等任务。而这些代码写起来总是重复的。 

        ORM解决的主要问题是对象关系的映射。域模型和关系模型分别是建立在概念模型的基础上的。域模型是面向对象的,而关系模型是面向关系的。一般情况下,一个持久化类和一个表对应,类的每个实例对应表中的一条记录,类的每个属性对应表的每个字段。 
        ORM技术特点: 
        1.提高了开发效率。由于ORM可以自动对Entity对象与数据库中的Table进行字段与属性的映射,所以我们实际可能已经不需要一个专用的、庞大的数据访问层。 
        2.ORM提供了对数据库的映射,不用sql直接编码,能够像操作对象一样从数据库获取数据。 

下面介绍下JackKnife-orm的基本使用

一、关于如何配置环境

如果要依赖jackknife的库,需要对号入座的加上以下两个配置。

//指定仓库的地址,在project的build.gradle加入加粗的代码。

allprojects {  repositories {    jcenter()    maven { url "https://jitpack.io" }  } }

//依赖本库,在app模块的build.gradle加入加粗的代码。

dependencies {  compile 'com.github.JackWHLiu:jackknife:1.0.0' }

二、关于如何使用(参考jackKnife官网http://www.jackwhliu.cn/jackknife/)

三、如何使用jackknife-ORM框架

首先初始化:在activity中onCreate()方法中加入以下代码

OrmConfig config = new OrmConfig.Builder()
        .database("ormdemo")//数据库名称
        .version(1)//数据库版本号,默认1,只能升不能降
        .tables(new Class[] {User.class})//要初始化的表
        .build();
Orm.init(this, config);

说明:在这里博主强烈建议把这段代码放入application中去,避免以后每次使用都需要初始化

其次必须建立一个Object类  例如:

@Table("user")
public class User implements OrmTable {

    @PrimaryKey(AssignType.AUTO_INCREMENT)
    @Column("_id")
    private int id;

    @Unique
    @NotNull
    @Column("name")
    private String name;

    @NotNull
    @Column("age")
    private int age;

    public User() {//必须保留public的无参构造函数
    }

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

相信有点sqlLite基础的朋友应该可以大概猜出上面这个类里面一些标签的意思

@Table("user")
表名

@PrimaryKey(AssignType.AUTO_INCREMENT)
主键,会自动增长

@Unique
@NotNull
@Column("name")
唯一不为空的字段 字段名为name .......

大家可以去github关注我的项目,或者下载DEMO可以了解的更详细

最后就是简单的调用了,这里插入了几条简单的数据。

OrmDao<User> dao = DaoFactory.getDao(User.class);
        dao.insert(new User("Celica", 16));
        List<User> users = new ArrayList<>();
        users.add(new User("Alm", 17));
        users.add(new User("Mycen", 54));
        dao.insert(users);
//        dao.delete(WhereBuilder.create().addWhereEqualTo("age", 54));//删除Mycen
        User user = dao.selectOne();
        textview_orm_user.setText(user.toString());
        for (User u:dao.select(QueryBuilder.create().limit(1,2))) {//limit传一个参数表示个数,传两个参数表示截取
            Logger.error(u.toString());
        }
其实Jackknife还有很多功能,基本的增删改出等数据库常规操作都能完成,至于性能方面大家不用担心,比起OrmLite和GreenDao也不妨多让,主要是博主的框架比他们的要小巧,这对APP体积减少很有帮助

好了几天的JackKnife-ORM框架就介绍到这里,希望大家能去github多多关注,多给星,支持下博主

最后再来一波推广,github传送门:https://github.com/JackWHLiu/jackknife

 类似资料: