开发 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
若是要依赖jackknife的库,须要对号入座的加上如下两个配置。框架
allprojects { repositories { jcenter() maven { url "https://jitpack.io" } } }
dependencies { compile 'com.github.JackWHLiu:jackknife:1.0.0' }
首先初始化:在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