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

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

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

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

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

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

数据库

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

1、关于如何配置环境

若是要依赖jackknife的库,须要对号入座的加上如下两个配置。框架

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

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

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

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

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

3、如何使用jackknife-ORM框架

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

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

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

其次必须创建一个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