一、項目配置 1、根目錄下的build.gradle 中添加 如下: 如下: 2、app目錄下的build.gradle 中添加 依賴: 3、創建自己的Application 清單文件配置: 二、使用 1、創建一個資料庫類 2、創建一個表類 3、增刪改查 查詢: 測試: 結果: 註意:如果一個表中的 ...
一、項目配置
1、根目錄下的build.gradle 中添加
maven { url "https://www.jitpack.io" }
如下:
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
如下:
2、app目錄下的build.gradle 中添加
apply plugin: 'com.neenbedankt.android-apt'
def dbflow_version = "4.0.2"
依賴:
apt "com.github.Raizlabs.DBFlow:dbflow-processor:${dbflow_version}"
compile "com.github.Raizlabs.DBFlow:dbflow-core:${dbflow_version}"
compile "com.github.Raizlabs.DBFlow:dbflow:${dbflow_version}"
// sql-cipher database encyrption (optional)
compile "com.github.Raizlabs.DBFlow:dbflow-sqlcipher:${dbflow_version}"
3、創建自己的Application
public class XApplication extends Application{ @Override public void onCreate() { super.onCreate(); FlowManager.init(this); } }
清單文件配置:
二、使用
1、創建一個資料庫類
/** * @author xqx * @email [email protected] * blog:http://www.cnblogs.com/xqxacm/ * createAt 2017/11/22 * description: 資料庫類 */ @Database(name = SchoolDatabase.Name , version = SchoolDatabase.VERSION) public class SchoolDatabase { static final String Name = "SchoolDB"; //資料庫名 static final int VERSION = 1; //資料庫版本號 }
2、創建一個表類
/** * @author xqx * @email [email protected] * blog:http://www.cnblogs.com/xqxacm/ * createAt 2017/11/22 * description: 學生表 屬於SchoolDatabase資料庫的 */ @Table(database = SchoolDatabase.class) public class Student extends BaseModel{ //主鍵 一個表必須有至少一個主鍵 // (autoincrement = true) 表示該欄位是自增的,可以不設置 ,預設false @PrimaryKey(autoincrement = true) long id ; // 名字 @Column String name; // 年齡 @Column int age; //---------------------以下為可有可無的---------------//
//註意 一定要有一個無參的構造方法
public Student() {
}
/** * 構造方法 看情況添加 可不加 * @param name * @param age */ public Student(String name, int age) { this.name = name; this.age = age; } //Getter 和 Setter 方法,自己添加、可有可無 public long getId() { return id; } public void setId(long id) { this.id = id; } 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; } }
3、增刪改查
Student student = new Student(); student.setName("XQX"); student.setAge(18); student.save(); //保存 student.update(); // 更改 student.delete(); //刪除 student.insert(); // 添加
查詢:
/** * 查詢年齡為100的學生記錄 * @param age * @return */ public Student findSingleStudent(int age){ Student student = SQLite.select().from(Student.class).where(Student_Table.age.is(100)).querySingle(); return student; } public List getAllStudents(){ List<Student> students = SQLite.select().from(Student.class).queryList(); return students; }
測試:
for (int i = 0; i < 10; i++) { addStudent("學生:"+i , i); } List<Student> students = SQLite.select().from(Student.class).queryList(); for (int i = 0; i < 10; i++) { Log.i("xqxinfo","學生表中的所有記錄:"+students.get(i).toString()); }
結果:
註意:如果一個表中的對象沒有的話,save等同於insert都是添加記錄
如果這個對象在表中存在,save即更新,不是添加