aSQLite+數(shù)據(jù)庫工具包
aSQLite+ 是一個小巧的數(shù)據(jù)庫工具包,正如其名字的意思,定位于為Android SQLite數(shù)據(jù)庫添加一些實用的功能。提供相當(dāng)多便利的方法幫助開發(fā)人員拼接和執(zhí)行增刪改查的SQL語句。
Android的核心類庫也提供了一些生成SQL語句,執(zhí)行SQL操作的工具類,但基本上都不太實用,體現(xiàn)在方法的簽名眾多,調(diào)用后仍然到開發(fā)者做游標(biāo)關(guān)閉或數(shù)據(jù)庫關(guān)閉等非業(yè)務(wù)邏輯的操作。
假設(shè)你想生成以下的一條SQL語句:
SELECT product_id, product_name FROM Products WHERE price >= 10 ORDER BY price DESC LIMIT 10
如果使用Android SQLite類庫來實現(xiàn),大致寫法如下:
String sql = android.database.sqlite.SQLiteQueryBuilder.buildQueryString(false,
"Products", new String[]{"product_id", "product_name"}, "price >= 10",
null, null, "price DESC", "10");
當(dāng)然,還有ORM或直接用"+"操作符連接各個子句的字符串拼接方法。個人認(rèn)為,在中小型的Android應(yīng)用中使用ORM純屬殺雞用牛刀,里面的反射操作也會對主線程產(chǎn)生性能影響。至于傳統(tǒng)的用"+"拼接字符串,更是增大開發(fā)與維護(hù)的成本。那,以上的SQL如果使用aSQLite+將會是如何做?
Statement statement = QueryStatement.produce("product_id", "product_name")
.from("Products").where("price").egt(10).orderBy("price").desc().limit(10);
String sql = statement.toString();
aSQLite+通過將每個SQL關(guān)鍵字或子句映射為方法,基本覆蓋了全部的語法,實現(xiàn)SQL的簡易拼接,使代碼更清晰易懂,便于維護(hù),大大簡化了SQL的構(gòu)造。開發(fā)者可以通過github上的眾多示例查看其完善的功能。
另外,aSQLite+實現(xiàn)了一個名為DBOverseer.java的類,用于執(zhí)行生成的SQL語句,使得開發(fā)者可以用兩三行以內(nèi)的代碼實現(xiàn)提取整數(shù)、字符串、列表、分類列表、反射實例,執(zhí)行插入、更新,批量操作。
項目內(nèi)提供詳細(xì)的代碼注釋,外加覆蓋所有功能的測試用例,還有Maven及Jar包等不同的集成方式可供選擇。歡迎開發(fā)者試用并提供測試意見。
