推薦一個好用的數據庫SDK—deepsql

好吧,說是推薦,其實這是我寫的一個數據庫組件,介紹給你們。這是初版,但願你們在使用的同時可以給提出意見,或者提出需求。java


解決痛點

這個數據庫的組件解決的痛點主要有如下幾類:sql

  • 建表的時候須要使用sql語句,若是表結構複雜,sql語句容易寫錯。deepsql能夠經過三種方式更加簡單的建表。直接傳入model類,或者json或者map,與實際使用場景更加契合。
  • 插入數據的時候,可使用model或json或map直接插入,不須要寫sql語句
  • 更新刪除都有封裝,操做更加簡單。

使用方式

只須要依賴數據庫

compile 'com.deep:deepsqllib:1.1'
複製代碼

便可。 下面介紹一下使用方式:json

初始化

DeepSQL.getInstance().init(getApplication(),"demo.db",1);
複製代碼

第一個參數是Application 第二個參數爲數據庫名字 第三個參數爲版本號。bash

建表

使用類建表

咱們常常會將數據庫內的數據轉成一個modal類型,若是可使用這個類來建表,豈不是很方便。 例如,咱們有一個類:ide

public class Person implements Serializable{
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
複製代碼

那麼根據這個類建表可使用:this

DeepSQL.getInstance().create(Person.class);
複製代碼

其中表名會使用類名spa

map建表

也有時咱們須要根據一個map建表:3d

HashMap<String,Object> map = new HashMap<String, Object>();
map.put("name","dog");
map.put("age",16);
DeepSQL.getInstance().create("animal",map);
複製代碼

其中第一個參數爲表名code

文件建表

若是以上方式都不須要,也可使用asset中json建表的方式: 在assets文件夾中放一個json文件

{
  "name1":"String",
  "name2":"int",
  "name3":"boolean",
  "name4":"float",
  "name5":"double",
  "name6":"long"
}
複製代碼

而後調用:

DeepSQL.getInstance().create(MainActivity.this, "names.json");
複製代碼

表的名爲會以json的文件名命名

json建表

若是不習慣使用assets中的這種json建表方式,也能夠直接使用json:

DeepSQL.getInstance().create(MainActivity.this, json);
複製代碼

插入

json插入

DeepSQL.getInstance().insert("person",jsonObject);
複製代碼
  • 第一個參數爲表名
  • 第二個參數爲插入的json

map 插入

DeepSQL.getInstance().insert("animal",map);
複製代碼
  • 第一個參數爲表名
  • 第二個參數爲插入的map

實例化插入

Person person  = new Person();
person.setName("john");
person.setAge(age);
DeepSQL.getInstance().insert(person);
複製代碼

數據庫查詢

查詢全部

ArrayList<Object> list =  DeepSQL.getInstance().selectObjects(Person.class,"person");
複製代碼
  • 第一個參數爲類
  • 第二個參數爲表名

根據條件返回Json

JSONArray array =  DeepSQL.getInstance().selectJsonArryBySQL("select * from person where id = 5");
複製代碼

根據條件返回Object

ArrayList<Object> list =  DeepSQL.getInstance().selectObjectsBySQL(Person.class,"select * from person where id = 5");

複製代碼

更新

json更新

DeepSQL.getInstance().update("person","id=?",new String[]{"5"},jsonObject);
複製代碼

object更新

DeepSQL.getInstance().update("person","id=?",new String[]{"5"},person);
複製代碼

刪除

DeepSQL.getInstance().del("person","id=?",new String[]{"6"});
複製代碼

刪除表

DeepSQL.getInstance().dropTable("person");
複製代碼

直接執行sql語句

非查詢

DeepSQL.getInstance().exec("sql");
複製代碼
  • 參數爲SQL語句

查詢

Cursor c =DeepSQL.getInstance().queryBySQL("sql");
複製代碼
  • 參數爲SQL語句

數據庫升級或降級處理

DeepSQL.getInstance().sqlInterface = new SqlInterface() {
            @Override
            public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) {
                Logger.single(C.E,"onUpgrade myself");
            }

            @Override
            public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
                Logger.single(C.E,"onUpgrade myself");
            }
        };
複製代碼

請注意該方法須要在init以前調用。

特別說明

第一次寫開源庫,能力有限,歡迎你們多多提出意見。 也歡迎關注個人公衆號,以後會推薦更多好用的組件庫。

相關文章
相關標籤/搜索