xUtils3.0使用介紹:資料庫模組
步驟:
1. 建立資料表
2. DaoConfig 獲取資料庫的配置資訊
3. 獲取資料庫例項: x.getDb(daoConfig);
4. 資料庫的增刪改查
第一步,建立一張資料表
在這裡要強調的是,資料庫裡面表的建立的時間,只有在你對資料庫裡面的操作涉及到這張表的操作時,會先判斷當前的表是否存在,如果不存在,才會建立一張表,如果存在,才會進行相應的CRUD操作。
@Table(name = "person")
public class person {
@Column(name = "id", isId = true, autoGen = true )
public int id;
@Column(name = "name")
public String name;// 姓名
@Column(name = "age")
public int age;// 年齡
@Column(name = "sex")
public String sex;// 性別
@Column(name = "salary")
public String salary;// 工資
@Override
public String toString() {
return "person [id=" + id + ", name=" + name + ", age=" + age
+ ", sex=" + sex + ", salary=" + salary + "]";
}
}
上表中包含了db相關Annotation:
@Check check約束
@Column 列名
@Finder 一對多、多對一、多對多關係(見sample的Parent、Child中的使用)
@Foreign 外來鍵
@Id 主鍵,當為int型別時,預設自增。 非自增時,需要設定id的值
@NoAutoIncrement 不自增
@NotNull 不為空
@Table 表名
@Transient 不寫入資料庫表結構
@Unique 唯一約束
第二步:DaoConfig 獲取資料庫的配置資訊
這個配置最好寫在工具類中,方便呼叫:
private static DaoConfig daoConfig;
public static DaoConfig getDaoConfig(){
if(daoConfig==null){
daoConfig = new DbManager.DaoConfig()
.setAllowTransaction(true)//設定允許開啟事務
.setDbName("test.db")//建立資料庫的名稱
// 不設定dbDir時, 預設儲存在app的私有目錄.
.setDbDir(new File("/sdcard")) // "sdcard"的寫法並非最佳實踐, 這裡為了簡單, 先這樣寫了.
.setDbVersion(1)//資料庫版本號
.setDbOpenListener(new DbManager.DbOpenListener() {
@Override
public void onDbOpened(DbManager db) {
// 開啟WAL, 對寫入加速提升巨大
db.getDatabase().enableWriteAheadLogging();
}
})
.setDbUpgradeListener(new DbManager.DbUpgradeListener() {
@Override
public void onUpgrade(DbManager db, int oldVersion, int newVersion) {
// TODO: ...
//db.addColumn(...);
// db.dropTable(...);
// ...
// or
// db.dropDb();
}
});
}
return daoConfig;
}
第三步:獲取資料庫例項
DaoConfig daoConfig = xUtils.getDaoConfig();
db = x.getDb(daoConfig);
第四部步:資料庫的增刪改查
通過DbManager這個類我們知道主要它做了以下幾件事情:
- .getDaoConfig 獲取資料庫的配置資訊
- getDatabase 獲取資料庫例項
- saveBindingId ;saveOrUpdate ; save 插入資料的3個方法(儲存資料)
- replace 只有存在唯一索引時才有用 慎重
- .delete操作的4種方法(刪除資料)
- update操作的2種方法(修改資料)
- find操作6種方法(查詢資料)
- dropTable 刪除表
- addColumn 新增一列
- dropDb 刪除資料庫
增:
try {
List<person> list = new ArrayList<person>();
for (int i = 0; i < 1; i++) {
person person = new person();
person.name = "wingli"+i;
person.age = 18;
person.salary = "1000元";
person.sex = "男";
list.add(person);
}
db.save(list);//儲存實體類或實體類的List到資料庫
// db.saveOrUpdate(list);//儲存或更新實體類或實體類的List到資料庫, 根據id對應的資料是否存在
// db.saveBindingId(list);儲存實體類或實體類的List到資料庫,如果該型別的id是自動生成的, 則儲存完後會給id賦值
} catch (DbException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
查:
try {
//1
db.findById(person.class, 1);//通過主鍵的值來進行查詢表裡面的資料
//2
db.findFirst(person.class);//返回當前表裡面的第一條資料
//3
List<person> findAll = db.findAll(person.class);//返回當前表裡面的所有資料
//4
// db.findDbModelAll(new SqlInfo("select * from person where age > 25"));
DbModel model = db.findDbModelFirst(new SqlInfo("select * from person where age > 25"));
model.getString("age");//model相當於遊標
//5
List<person> findAll2 = db.selector(person.class).expr("age >10").findAll();//主要是用來進行一些特定條件的查詢
//6
db.selector(person.class).where("age ",">","25").and("column2", "=","value2").and("column3", "!=","value3").findAll();//多重條件查詢
} catch (DbException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
刪
try {
//1
db.delete(person.class);//該方法是刪除表中的全部資料
//2
db.deleteById(person.class, 12);//該方法主要是根據表的主鍵(id)進行單條記錄的刪除
//3
db.delete(person.class, WhereBuilder.b("age", ">","20"));//根據where語句的條件進行刪除操作
//4
List<person> findAll = db.selector(person.class).expr("age > 20").findAll();
db.delete(findAll);//根據實體bean進行對錶裡面的一條或多條資料進行刪除
} catch (DbException e) {
e.printStackTrace();
}
改:
try {
List<Person> findAll = db.findAll(Person.class);
for (Person person : findAll) {
person.age = 1;
person.salary = "qqqqq";
}
db.update(findAll, "age");//可以使物件、集合
} catch (DbException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
新增一個欄位:
通常用在資料庫升級
db.addColumn(Person.class, "count");
相關推薦
xUtils3.0使用介紹:資料庫模組
步驟: 1. 建立資料表 2. DaoConfig 獲取資料庫的配置資訊 3. 獲取資料庫例項: x.getDb(daoConfig); 4. 資料庫的增刪改查 第一步,建立一張資料表 在這裡要強調的是,資料庫裡面表的建立的時間,只
Android xUtils3原始碼解析之資料庫模組
本文已授權微信公眾號《非著名程式設計師》原創首發,轉載請務必註明出處。 xUtils3原始碼解析系列 配置資料庫 DbManager.DaoConfig daoConfig = new DbManager.DaoConfig()
Spark 2.0介紹:從RDD API遷移到DataSet API
RDD遷移到DataSet DataSet API將RDD和DataFrame兩者的優點整合起來,DataSet中的許多API模仿了RDD的API,雖然兩者的實現很不一樣。所以大多數呼叫RDD API編寫的程式可以很容易地遷移到DataSet API中,下面我
xUtils3.0使用介紹:圖片載入模組
現在來介紹xUtils3.0的載入圖片功能,3.0之後加入了許多實用的工具,如圖片倒圓角,變圓園,變正方形,載入gif等等。。。 圖片載入模組 1,加在網路圖片 x.image().bind(imageView, url, imageOptions);
Kafka 0.11新功能介紹:空消費組延遲rebalance
延時處理 max 詳細 方便 聲明 qrcode 狀態機 分享圖片 -c Kafka 0.11新功能介紹:空消費組延遲rebalance 在0.11之前的版本中,多個consumer實例加入到一個空消費組將導致多次的rebalance,這是由於每個consumer i
轉:OAuth 2.0 介紹
tgz 表示 lencod 保護 瀏覽器中 服務器申請 orm 這一 打開 OAuth是一個關於授權(authorization)的開放網絡標準,在全世界得到廣泛應用,目前的版本是2.0版。 本文對OAuth 2.0的設計思路和運行流程,做一個簡明通俗的解釋,主要參考材料
C++從零開始區塊鏈:P2P模組之簡單介紹一下原理
想徹底說明P2P的原理太麻煩了,而且這種東西網上一搜就是一大堆(雖然好多連結其實都是同一篇文章),這裡就不贅述了,只簡單說一下本例所用到的一些東西。 如果所有節點都在公網上,p2p通訊就非常容易,找臺搭橋伺服器,每個節點啟動的時候都向搭橋伺服器註冊自己,並獲取其他節點資訊,然後就可以節點間
oracle筆記:資料庫初始化打不開,程序為0解決方案
用PL登入提示初始化打不開,程序為0,一方面原因為資料檔案有丟失情況或者誤刪除; 另一方面為控制檔案有誤,總之就是缺失或者錯誤造成的。 下面是一次解決此方案的過程: 啟動時報這個錯誤 ORA-01157: 無法標識/鎖定資料檔案 5 - 請參閱 DBWR 跟蹤檔案 ORA-
自動駕駛平臺Apollo 3.0閱讀手記:perception模組之lane post processing
背景 之前寫過一篇雜文《自動駕駛平臺Apollo 2.5閱讀手記:perception模組之camera detector》,介紹到用於camera輸入的DNN模型不僅會輸出物體檢測結果,還會輸出車道線的語義分割結果。但要得到最終的車道線資訊,還要經過後處理。專
Kafka 0.11新版本釋出:主要的功能變更介紹:支援 EOS, 事務和冪等producer
Apache Kafka近日推出0.11版本。這是一個里程碑式的大版本,特別是Kafka從這個版本開始支援“exactly-once”語義(下稱EOS, exactly-once semantics
042:資料庫操作相關軟體和包介紹
MySQL資料庫介紹: 在網站開發中,資料庫是網站的重要組成部分。只有提供資料庫,資料才能夠動態的展示,而不是在網頁中顯示一個靜態的頁面。資料庫有很多,比如有 SQL Server 、 Oracle 、 PostgreSQL 以及 MySQL 等等。 MySQL 由於價格實惠、簡單易用、不受平臺限制、靈
Django 2.0 專案配置檔案介紹:
Django專案配置檔案為setting,如下: 其各部分內容含義如下: BASE_DIR:專案檔案路徑,專案建立之後自動設定,不需要改動。 SECRET_KEY:金鑰,專案建立之後自動設定,不需要改動。 DEBUG:供開發人員用,專案結束後,需要將其設定為False。
每日一python(5):json模組中的相關方法介紹
1、json.dumps()和json.loads()函式 說明: json.dumps()函式是將一個Python資料型別進行json格式的編碼(簡單理解,json.dumps()函式是將字典轉化為字串) json.loads()函式是將json格式資料轉換為字典
python常用模組介紹之一:string模組
簡介: string模組主要用於對字串進行操作。string裡的許多特性都已經移植到str和unicode物件的方法裡去了。下面主要討論下string模組的常用方法。 函式 1. string.atof(s) 字串轉換成浮點型 string.a
資料庫頂級會議介紹:VLDB、SIGMOD、ICDE
VLDB和另外兩大資料庫會議SIGMOD、ICDE構成了資料庫領域的三個頂級會議。VLDB (Very Large Data Base) 是資料庫研究人員,供應商,參與者,應用開發者,以及使用者一年一度的主要國際論壇。VLDB國際會議於1975在美國的弗雷明漢馬 (Fram
greendao3.0以上使用步驟(三):資料庫加密
引入資料庫 1、在專案的build.gradle中加入這些配置 // Top-level build file where you can add configuration options common to all sub-projects/
greendao3.0以上使用步驟(二):資料庫到底該怎麼升級
這一篇看看資料庫到底該怎麼升級呢?看我升級後的效果 沒有升級前的頁面顯示 沒有升級前的資料庫 升級後的頁面顯示 升級後的資料庫 看增加了一個NUM欄位 。 最新有小夥伴遇到資料庫升級問題了,說網上都是2.0版本的升級方法,
【OpenCV】3.4.0影象拼接Stitching模組介紹
Images stitching 是opencv3.4.0中的模組之一,使用此模組可以實現對影象的拼接。在此之前需要編譯opencv3.4.0+contrib。具體編譯方法可以點此連結。也可以直接
android camera(一):camera模組CMM介紹
關鍵詞:android camera CMM 模組 camera引數 平臺資訊: 核心:linux 系統:android 平臺:S5PV310(samsung exynos 4210) 作者:xubin341719(歡迎轉載,請註明作者) 新專案開案,程式碼他們還沒給
Vue.js原始碼中大量採用的ES6新特性介紹:模組、let、const
1 關於ES6 ECMAScript6(以下簡稱ES6)是JavaScript語言的最新一代標準,釋出於2015年6月,因為ECMA委員會決定從ES6起每年更新一次標準,因此ES6被改名為ES2015,後面的標準將按照發布的年份命名,比如ES2016、ES2017。