【玩轉SQLite系列】(七)打造輕量級ORM工具類SQLiteDbUtil操作數據庫

轉載請註明出處:http://blog.csdn.net/linglongxin24/article/details/53385868
本文出自【DylanAndroid的博客】


【玩轉SQLite系列】(七)打造輕量級ORM工具類SQLiteDbUtil操作數據庫

之前已經講了SQLite數據庫的各種使用和操作,我們發現,每次操作起來比較麻煩。在最後,我想到自己去封裝一個輕量級的操作SQLite數據庫工具類,
類似於ORM對象關係映射型的數據庫工具類,比較輕量級,可能功能不是那麼的完美,畢竟只是個工具而已嗎。

一.SQLiteDbUtil工具類超簡單用法

  • 1.引入庫文件

支持在build.gradle引入

compile 'cn.bluemobi.dylan:sqlitelibrary:0.1'
  • 2.支持的數據類型

支持的表字段數據類型包括:基本類型、包裝類型、String類型、Date類型

    /**
     * 支持的表字段數據類型包括:基本類型、包裝類型、String類型、Date類型
     */
    String[] types = {"java.lang.Integer",
            "java.lang.Double",
            "java.lang.Float",
            "java.lang.Long",
            "java.lang.Short",
            "java.lang.Byte",
            "java.lang.Boolean",
            "java.lang.Character",
            "java.lang.String",
            "java.util.Date",
            "int",
            "double",
             "long",
             "short",
             "byte",
             "boolean",
             "char",
             "float"};
  • 3.注意事項

    數據庫給默認會將id作爲主鍵並自增。

二.開始使用

  • 1.建立對象User->對應表
package cn.bluemobi.dylan.sqlite.mode;

import java.util.Date;

/**
 * Created by yuandl on 2016-11-21.
 */

public class User {
    private int id;
    private String name;
    private int age;
    private Double integral;
    private Date time;
    private boolean flag;

    public int getAge() {
        return age;
    }

    public User setAge(int age) {
        this.age = age;
        return this;
    }

    public int getId() {
        return id;
    }

    public User setId(int id) {
        this.id = id;
        return this;
    }

    public Double getIntegral() {
        return integral;
    }

    public User setIntegral(Double integral) {
        this.integral = integral;
        return this;
    }

    public String getName() {
        return name;
    }

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

    public Date getTime() {
        return time;
    }

    public void setTime(Date time) {
        this.time = time;
    }

    public boolean isFlag() {
        return flag;
    }

    public User setFlag(boolean flag) {
        this.flag = flag;
        return this;
    }

    @Override
    public String toString() {
        return "User{" +
                "age=" + age +
                ", id=" + id +
                ", name='" + name + '\'' +
                ", integral=" + integral +
                ", time=" + time +
                ", flag=" + flag +
                '}';
    }
}
  • 2.操作代碼

    package cn.bluemobi.dylan.sqlite;
    
    import android.os.Bundle;
    import android.support.annotation.Nullable;
    import android.support.v7.app.AppCompatActivity;
    import android.util.Log;
    import android.view.View;
    import android.widget.Toast;
    
    import java.util.Arrays;
    import java.util.Date;
    import java.util.List;
    import java.util.Map;
    
    import cn.bluemobi.dylan.sqlite.contacts.Contacts;
    import cn.bluemobi.dylan.sqlite.mode.User;
    import cn.bluemobi.dylan.sqlitelibrary.JavaReflectUtil;
    import cn.bluemobi.dylan.sqlitelibrary.SQLiteDbUtil;
    
    /**
    * 通過封裝的工具類操作SQLite
    * Created by Administrator on 2016-11-19.
    */
    
    public class UtilTestActivity extends AppCompatActivity {
    
    
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         getSupportActionBar().setTitle("通過封裝的工具類操作SQLite");
         setContentView(R.layout.ac_api_operate);
         SQLiteDbUtil.getSQLiteDbUtil().openOrCreateDataBase(this);
         Log.d(Contacts.TAG, "User類的所有信息:" + Arrays.toString(JavaReflectUtil.getAttributeNames(User.class)));
         Log.d(Contacts.TAG, "User類的所有信息:" +  Arrays.toString(JavaReflectUtil.getAttributeType(User.class)));
     }
    
     /**
      * 1.創建數據表user
      * 表名 user
      * *數據表user表結構字段
      * 主鍵:id
      * 名字:name
      * 年齡:age:
      *
      * @param v
      */
     public void create(View v) {
         SQLiteDbUtil.getSQLiteDbUtil().createTable(User.class);
     }
    
     /**
      * 2.刪除數據表user
      *
      * @param v
      */
     public void drop(View v) {
         SQLiteDbUtil.getSQLiteDbUtil().drop(User.class);
     }
    
     /**
      * 3.給user表中新增一條數據
            *
      * @param v
      */
     public void insert(View v) {
         User user = new User();
         user.setName("張三");
         user.setAge(22);
         user.setIntegral(12.03);
         user.setTime(new Date());
         long num = SQLiteDbUtil.getSQLiteDbUtil().insert(user);
         if (num == -1) {
             Toast.makeText(this, "插入失敗", Toast.LENGTH_SHORT).show();
         } else {
             Toast.makeText(this, "成功插入到第" + num + "行", Toast.LENGTH_SHORT).show();
         }
     }
    
     /**
      * 4.修改user表中id爲2的名字改成“李四”
     * @param v
      */
     public void update(View v) {
    
         User user = new User();
         user.setName("李四");
         user.setAge(22);
         user.setIntegral(12.03);
         int num = SQLiteDbUtil.getSQLiteDbUtil().update(user, 5);
         Toast.makeText(this, "修改了" + num + "行", Toast.LENGTH_SHORT).show();
    //        user.setName("王五");
    //        SQLiteDbUtil.getSQLiteDbUtil().update(user, "name='李四'");
     }
    
     /**
      * 5.刪除user表中id爲2的記錄
      * @param v
      */
     public void delete(View v) {
         int num = SQLiteDbUtil.getSQLiteDbUtil().delete(User.class, 2);
         Toast.makeText(this, "刪除了" + num + "行", Toast.LENGTH_SHORT).show();
    //     SQLiteDbUtil.getSQLiteDbUtil().delete(User.class,"name='李四'");
     }
    
     /**
      * 6.查詢數據
      * @param v
      */
     public void query(View v) {
         List<User> users = SQLiteDbUtil.getSQLiteDbUtil().query(User.class);
         if (users == null) {
    
             Log.d(Contacts.TAG, "沒有數據");
             return;
         }
    
         Log.d(Contacts.TAG, "util查:共" + users.size() + "個對象=" + users.toString());
         String sql = "SELECT * FROM User";
         List<Map<String, Object>> list = SQLiteDbUtil.getSQLiteDbUtil().rawQuery(sql);
         Log.d(Contacts.TAG, "sql查:共" + list.size() + "個對象=" + list.toString());
     }
    
     @Override
     protected void onDestroy() {
         super.onDestroy();
     }
    }
    

    三.GitHub

發佈了134 篇原創文章 · 獲贊 73 · 訪問量 63萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章